Skip to content

feat(delegate): add acp_command/acp_args override to delegate_task#3113

Closed
Mibayy wants to merge 1 commit into
NousResearch:mainfrom
Mibayy:feat/delegate-acp-override
Closed

feat(delegate): add acp_command/acp_args override to delegate_task#3113
Mibayy wants to merge 1 commit into
NousResearch:mainfrom
Mibayy:feat/delegate-acp-override

Conversation

@Mibayy

@Mibayy Mibayy commented Mar 26, 2026

Copy link
Copy Markdown
Contributor

Closes #2653

Problem

delegate_task always inherited acp_command/acp_args from the parent agent. If the parent was running via Discord, Telegram, or CLI (no ACP), it was impossible to spawn a child over ACP transport.

Solution

Two new optional params on delegate_task:

Param Type Description
acp_command string ACP executable to use for child (e.g. "claude", "copilot")
acp_args string[] Args passed to the command (default: ["--acp", "--stdio"])

Both can also be set per-task in batch mode.

Usage

# From Discord/Telegram — spawn Claude Code via Max subscription
delegate_task(
    goal="Refactor this module for better testability",
    acp_command="claude",
    acp_args=["--acp", "--stdio"],
)

# Batch: mix transports per task
delegate_task(tasks=[
    {"goal": "Research topic",  "toolsets": ["web"]},
    {"goal": "Write the code",  "acp_command": "claude", "acp_args": ["--acp", "--stdio"]},
])

Implementation

Same override pattern as the existing override_provider/override_base_url chain — explicit override takes precedence, falls back to parent inheritance when not set. No behaviour change for existing callers.

65 existing delegation tests pass.

Enables spawning ACP child agents from any parent (Discord, Telegram,
CLI) regardless of the parent's own transport.

## Use case

From a Discord/Telegram parent, delegate a task to Claude Code running
via its Max subscription OAuth (no separate API key needed):

    delegate_task(
        goal="Refactor this module for better testability",
        acp_command="claude",
        acp_args=["--acp", "--stdio"],
    )

Or mix transports in a batch:

    delegate_task(tasks=[
        {"goal": "Research the topic",   "toolsets": ["web"]},
        {"goal": "Write the code",        "acp_command": "claude", "acp_args": ["--acp", "--stdio"]},
    ])

## Changes

- _build_child_agent(): added override_acp_command / override_acp_args params
  that take precedence over parent inheritance (same pattern as override_provider)
- delegate_task(): added acp_command / acp_args params, forwarded to _build_child_agent
- Tool schema: acp_command and acp_args added to top-level params and per-task items
- Registry handler: passes new params through

Closes NousResearch#2653
@teknium1

teknium1 commented Apr 5, 2026

Copy link
Copy Markdown
Contributor

Merged via PR #5292. Your contribution (delegate_task ACP override) was cherry-picked onto current main with your authorship preserved in git log. Thank you @Mibayy!

@teknium1 teknium1 closed this Apr 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: delegate_task ACP transport override — spawn ACP child agents from non-ACP parent

2 participants