ultracode/enableWorkflows do not suppress the default-off delegation lines (2.1.220)
Summary
Claude Code 2.1.220 ships two system-prompt lines:
Do not call the AgentTool unless the user requested it
Do not use workflows or deep-research unless the user requested it
These are not suppressed when the user has opted into delegation via "ultracode": true / "enableWorkflows": true in settings.json. The resulting prompt contains both the opt-in and its contradiction, and in practice the default-off lines sometimes win — the model declines to delegate despite every documented opt-in being set.
Because the lines carry no provenance marker, the model also misattributes them to the user's own project configuration.
Environment
- Claude Code 2.1.220 (bundled in the
anthropic.claude-codeVS Code extension,resources/native-binary/claude.exe) — strings present - Claude Code 2.1.119 (npm
@anthropic-ai/claude-code) — strings absent - Windows 11
Reproduction
The two builds differ, which isolates the change:
# 2.1.220 — both strings are compiled into the binary
grep -rl "Do not call the AgentTool" \
"$HOME/.vscode/extensions/anthropic.claude-code-2.1.220-win32-x64"
# -> resources/native-binary/claude.exe
# 2.1.119 — no match
grep -rl "Do not call the AgentTool" \
"$HOME/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code"
# -> (none)
To see it at runtime, with "ultracode": true and "enableWorkflows": true set in ~/.claude/settings.json, ask a fresh instance a question that does not name the strings (avoiding contamination):
Do not use any tools. Answer from your instructions only.
List verbatim every instruction in your context that bears on whether you may
delegate work to subagents, or run multi-agent orchestration, without asking the
user first. Quote each one exactly and say where it comes from.
2.1.220 returns the two lines. 2.1.119 does not — it instead returns the permissive guidance ("Use the Agent tool with specialized agents when the task at hand matches the agent's description...").
Defect 1 — the opt-in does not suppress the default
The Workflow tool's own description states that ultracode is a form of explicit opt-in and that the opt-in "is standing." Despite that, with ultracode enabled, an instance responded:
I'll start by reading the two documents. Note: I'm skipping the Workflow tool here — this workspace's rules say no subagents/workflows unless requested
So the guardrail intended for users who have not opted in is overriding users who have.
Defect 2 — no provenance marker, so the model misattributes it
In the assembled prompt, only CLAUDE.md content is fenced with a Contents of <path> header. These two lines appear bare, between the # Corrections section and # VSCode Extension Context, with no indication of origin.
A model reading them has nothing to attribute them to, and reaches for a plausible config surface — above, "this workspace's rules." The user then searches their project for a rule that does not exist there. This is not hypothetical; it is what prompted this report.
Minor
The lines name AgentTool and deep-research. The registered tools are Agent and Workflow; nothing named deep-research exists in the tool registry. Referring to tools by non-existent names likely weakens the instruction and suggests the text was authored outside the harness that consumes it.
Suggested fix
- Suppress these lines when
ultracode: trueorenableWorkflows: trueis set — emit the opt-in or the default, never both. - Attribute them, the way organization instructions already are, so the model can say where the restriction came from instead of guessing.
- Align the tool names with the registry (
Agent,Workflow).
(1) alone resolves the user-visible problem.