Skip to content

dld-implement: keep the review subagent running under harness subagent restrictions - #25

Merged
jimutt merged 1 commit into
mainfrom
implement-review-subagent-gating
Jul 27, 2026
Merged

dld-implement: keep the review subagent running under harness subagent restrictions#25
jimutt merged 1 commit into
mainfrom
implement-review-subagent-gating

Conversation

@jimutt

@jimutt jimutt commented Jul 27, 2026

Copy link
Copy Markdown
Owner

Problem

Claude Code 2.1.220 ships this in its system prompt, unconditionally:

Do not call the AgentTool unless the user requested it
Do not use workflows or deep-research unless the user requested it

Confirmed by grepping the shipped binary — it is not config-driven, not an Opus 5 behavior change, and there is no file to edit to turn it off.

Under that instruction, an agent running /dld-implement can read step 6's review subagent as an unrequested subagent call and skip it. Observed in a real run: the agent skipped the subagent, reviewed the diff inline instead, and disclosed the skip. Graceful, but the disclosure was luck rather than a rule, and inline review is the author checking their own work — the weaker check the separate agent exists to avoid.

Approach

Raising the imperative ("you MUST launch a subagent") pits skill text against a system-prompt directive and yields nondeterminism across runs. The directive is conditional — unless the user requested it — so the fix satisfies the condition instead:

  • Step 6 states that enabling implement_review and running the skill is the user's request, and notes this is one review agent at a fixed point rather than an unprompted fan-out.
  • Names the tool as Agent / AgentTool so skill text and directive use the same token.
  • Adds a fallback: if the subagent genuinely cannot run, review inline as a deliberate re-read from disk, then state in the final report which path ran and why.

The reframing is still an inference the model has to accept, so it is a strong nudge rather than a guarantee. The fallback is what makes the outcome safe either way — worst case is an inline review explicitly labeled as such, instead of a silent skip.

Changes

  • skills/dld-implement/SKILL.md and .claude/skills/dld-implement/SKILL.md — step 6, kept in sync
  • docs/framework/project-configuration.md — new "Implement Review" section covering the flag, why the reviewer is a separate agent, and the harness note

Verification

  • tessl tile lint passes
  • 165/165 bats tests pass
  • The two skill copies diff only on the expected script paths and frontmatter

🤖 Generated with Claude Code

…t restrictions

Claude Code 2.1.220 ships "Do not call the AgentTool unless the user
requested it" in its system prompt, unconditionally. Under that
instruction an agent running /dld-implement can read step 6 as an
unrequested subagent call and skip the review.

Step 6 now states that enabling implement_review and running the skill
is the user's request, satisfying the condition rather than contradicting
it. If the subagent still cannot run, the skill requires an inline review
over the files re-read from disk, and requires the agent to report which
path it took.

Also documents the flag and the harness interaction in
project-configuration.md.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@jimutt
jimutt merged commit 44daa38 into main Jul 27, 2026
1 check passed
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.

1 participant