docs(agents): teach the denylist escalation path in role cards + delivery brief - #358
Merged
Merged
Conversation
…very brief Delivery agents repeatedly reached for denylist-blocked destructive commands, hit the block, and burned a turn retrying. Teach the safe alternative + escalate-don't-retry path up front so they don't. One canonical block (identical wording, so the copies can't drift) added to the three artifacts a delivery agent reads: - plugin/cards/implementer.md (recompiled to plugin/agents/implementer.md) - plugin/skills/deliver/SKILL.md - plugin/skills/autopilot/SKILL.md (the § Orchestration spawn brief) The block maps each denylisted destructive class to its safe alternative (recursive rm outside build/temp -> targeted removal by path; hard-reset -> revert / restore; force-push -> force-with-lease, only when explicitly requested; clean-force -> targeted removal), states the escalate-don't-retry rule on a block, and carries the literal-string caveat: the denylist matches these command strings inside quoted/heredoc bodies, so any content that mentions a blocked command is written via a file + --body-file, never inline. AC-346.* tests assert the guidance is present in the role cards, the deliver skill, and the autopilot brief (and in the compiled implementer agent) so it cannot silently regress. Closes #346 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SATRHKa6mDHDuirhP6QuwL
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Delivery agents (orchestrator + spawned subagents) repeatedly reached for denylist-blocked destructive commands, hit the block, and burned a turn retrying. This teaches the safe alternative + escalate-don't-retry path up front, in the three artifacts a delivery agent actually reads.
One canonical block (identical wording, so the copies can't drift) added to:
plugin/cards/implementer.md— the implementer role card (recompiled toplugin/agents/implementer.md)plugin/skills/deliver/SKILL.md— the deliver skillplugin/skills/autopilot/SKILL.md— the § Orchestration spawn brief the loop hands each delivery subagentThe block maps each denylisted destructive class (verified against
plugin/hooks/denylist.mjs) to its safe alternative, states the escalate-don't-retry rule, and carries the literal-string /--body-filecaveat.Acceptance criteria
git revert/git restore <paths>; force-push ->--force-with-lease(only when explicitly requested); clean-force -> targeted removal.--body-file, never inline on a shell command line.tests/skills/denylist-guidance.test.mjsasserts the safe-alternative / escalate-don't-retry / caveat guidance is present in the role cards, the deliver skill, the autopilot brief, and the compiled implementer agent, so it cannot silently regress (mirrors the existing skill-text assertions).Verification
pnpm verify— 675 passing / 58 files, all green (includes the newdenylist-guidancesuite, the card freshness gate, and the deliver/autopilot skill-text suites).node plugin/scripts/backends/compile.mjsre-run so the compiled implementer agent matches its card (freshness gate green).--body-file/-F, never inline on a shell command line.Closes #346
🤖 Generated with Claude Code