Skip to content

agent_registry_update of the orchestrator's subagents allowlist does not reach the spawn_async_subagent enum #6934

Description

@fede-kamel

Summary

Updating the orchestrator's subagents.allowlist through openhuman.agent_registry_update persists in the registry but never reaches the spawn_async_subagent tool: its agent_id enum keeps the compiled default list, even after a core restart, so a registered custom sub-agent cannot be delegated to.

Problem

Headless openhuman-core serve 0.64.10. Steps:

  1. openhuman.agent_registry_create_custom with id: "researcher" (tool allowlist web_search_tool, web_fetch, tool_search). agent_registry_list shows it, source: custom.
  2. openhuman.agent_registry_update with id: "orchestrator" and subagents: {allowlist: [<the ten defaults>, "researcher"]}. agent_registry_get returns the eleven-entry allowlist.
  3. Restart the core.
  4. In a chat turn, ask the orchestrator to call spawn_async_subagent with agent_id: "researcher".

Result, verbatim from the tool:

invalid arguments for tool `spawn_async_subagent`: validation error: tool `spawn_async_subagent` arguments.agent_id must be one of the declared enum values; expected schema: {"properties":{"agent_id":{"description":"Sub-agent id (only these are dispatchable from here).","enum":["agent_memory","flow_discovery","image_agent","presentation_agent","profile_memory_agent","skill_setup","task_manager_agent","video_agent","vision_agent","workflow_builder"],...

Expected: the enum (and execute's allowlist check) follow the registry's current subagents.allowlist for the orchestrator, or the docs state that default agents' delegation policy is fixed and point at the supported way to let the orchestrator reach a custom agent.

Where it comes from, as far as I can tell: agent/registry/defaults.rs builds subagents: AgentSubagentPolicy::from_allowlist(def.subagents ...) from the compiled harness definition, and agent/orchestration/tools/spawn_async_subagent.rs::scope_spawn_async_subagent_spec scopes the enum from that definition; the registry override is not consulted at session build.

Solution (optional)

Resolve the parent's subagents policy from the registry snapshot (custom overrides win over defaults) when building the session's tool specs, the same way tool_allowlist overrides are honoured. If delegation for default agents is meant to be immutable, reject the agent_registry_update with a clear error instead of accepting it.

Acceptance criteria

  • Repro gone — after step 2, spawn_async_subagent lists and accepts researcher without a restart.
  • Regression safety — unit test: registry override of subagents.allowlist changes the scoped spec.
  • Diff coverage ≥ 80%.

Related

Found on https://github.com/kamelhar/openhuman-oci while building a research fan-out; sibling headless findings #6925, #6926, #6927, #6933.

Activity

  1. added
    priority: p1Next. Wrong behaviour a user will hit, or a security weakness behind a condition.
    on Oct 2, 2026
  2. tinysweeper commented on Oct 2, 2026

    @tinysweeper

    agent_registry_update of orchestrator subagents allowlist does not propagate to spawn_async_subagent tool's enum, preventing delegation to custom sub-agents even after restart

    Labelled priority: p1.

  3. added theissue type on Oct 2, 2026
  4. added 2 commits that reference this issue on Oct 2, 2026
    40b7515
    7d5c8ac
  5. senamakel commented on Oct 9, 2026

    @senamakel
    Member

    Triage: valid — Current review confirms this is a concrete, in-scope engineering issue or request: “agent_registry_update of the orchestrator's subagents allowlist does not reach the spawn_async_subagent enum”. No complete resolution is evident in current main.

  6. senamakel commented on Oct 9, 2026

    @senamakel
    Member

    Triage: needs opinion — “agent_registry_update of the orchestrator's subagents allowlist does not reach the spawn_async_subagent enum” needs a maintainer decision on product scope/priority or fresh reproduction evidence before its status can be settled. Please advise whether to pursue, narrow, or close it.

  7. senamakel commented on Oct 9, 2026

    @senamakel
    Member

    Triage correction: valid — Current review confirms “agent_registry_update of the orchestrator's subagents allowlist does not reach the spawn_async_subagent enum” is an actionable, in-scope gap; no complete resolution is evident in current main.

  8. added
    source: externalIssue opened by an outside contributor
    and removed
    triage: needs-opinionValid issue awaiting a maintainer product or priority decision
    on Oct 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    priority: p1Next. Wrong behaviour a user will hit, or a security weakness behind a condition.source: externalIssue opened by an outside contributortriage: validReviewed and confirmed as a valid actionable issue

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions