AI disclosure: investigation and first-draft prose written by Claude (Opus 4.7). The framing, scope, and the disclosure line are mine (the human opening this).
Context
dist/acp-agent.js:1334 hard-codes:
// Disable this for now, not a great way to expose this over ACP at the moment (in progress work so we can revisit)
const disallowedTools = ["AskUserQuestion"];
The blacklist is unconditionally appended to `disallowedTools` for every session at `dist/acp-agent.js:1379`, so any ACP client (Zed, agent-of-empires, etc.) never sees an AskUserQuestion tool_call regardless of what the model wants to do.
Why this matters
AskUserQuestion is Claude Code's canonical mechanism for structured clarification (multi-choice "which approach do you want", "is this destructive op OK") with a typed contract on the user's reply. Without it, the model either:
- Falls back to free-text questions in the assistant turn — works, but loses the structured-choice contract and the UI affordance.
- Or skips clarification and guesses, which is worse for ambiguous tasks.
In agent-of-empires we expose an ACP cockpit and the missing tool is currently the only Claude Code stock tool that doesn't reach the UI.
Proposal
Either of the following unblocks us — preference for whichever is closer to the team's "in progress work" already mentioned in the source comment:
- Surface as a regular tool_call: drop the entry from `disallowedTools` and let clients render it with their own UI. Clients that don't want it can re-add the entry via `userProvidedOptions.disallowedTools` to opt out. Matches the ecosystem (Read/Edit/Bash all flow through tool_call notifications).
- Route via ACP elicitation: dispatch AskUserQuestion through `CreateElicitationRequest` (the `unstable_elicitation` capability in `agent-client-protocol-schema 0.12.0`). Spec-pure but requires the unstable feature on the client.
How tested
Not yet — issue tracks the work upstream. Filing because the inline TODO comment says it's already on the team's radar and we'd like to know whether it's worth waiting or whether option (1) above is acceptable to upstream so we can patch locally without forking the package.
cc @njbrake
AI disclosure: investigation and first-draft prose written by Claude (Opus 4.7). The framing, scope, and the disclosure line are mine (the human opening this).
Context
dist/acp-agent.js:1334hard-codes:The blacklist is unconditionally appended to `disallowedTools` for every session at `dist/acp-agent.js:1379`, so any ACP client (Zed, agent-of-empires, etc.) never sees an AskUserQuestion tool_call regardless of what the model wants to do.
Why this matters
AskUserQuestion is Claude Code's canonical mechanism for structured clarification (multi-choice "which approach do you want", "is this destructive op OK") with a typed contract on the user's reply. Without it, the model either:
In agent-of-empires we expose an ACP cockpit and the missing tool is currently the only Claude Code stock tool that doesn't reach the UI.
Proposal
Either of the following unblocks us — preference for whichever is closer to the team's "in progress work" already mentioned in the source comment:
How tested
Not yet — issue tracks the work upstream. Filing because the inline TODO comment says it's already on the team's radar and we'd like to know whether it's worth waiting or whether option (1) above is acceptable to upstream so we can patch locally without forking the package.
cc @njbrake