#3335 P3 · playground · 2026-08-11

Three cosmetic fields, and only two of them were.

#3335's P3 tail bundles permissionMode, MultiEdit and context as one cosmetic sweep of 74 declarations. Reading the CC 2.1.227 binary promoted two of them and disqualified the third. The sweep ships as 5 files, not 74.

The oracle, at byte 91099675

CC's plugin-agent loader walks a fixed key array and warns on every one it finds set:

[permissionMode, hooks, mcpServers]

`Plugin agent file ${e} sets ${G}, which is ignored for plugin agents.
 Use .claude/agents/ for this level of configuration.`
ignored keyork agents setting itmeaning
permissionMode5permissionMode: plan never applied
hooks33the 45 agent-scoped hooks, see #3430
mcpServers36and a perf test FAILs any agent missing it
context36absent from the array, so possibly honoured

Each one is a load-time warning for a setting that does nothing. That makes removal a fix rather than tidying. It also means the fields are inert because ork ships plugin agents — copied into a project's own .claude/agents/, they would work.

What shipped, and what did not

fieldissue saysevidence saysaction
MultiEdit12 dead declarations5 are tools: GRANTS (dead); 7 are disallowedTools: [Write, Edit, MultiEdit] DENIESremoved 5, kept 7
permissionModezero consumersin CC's ignored array, and warns on loadremoved 5
contextgenuinely cosmetic, 36 agents + 4 gatesNOT in the ignored arraydropped from this PR

Why a grant and a deny are not the same edit

Asymmetric risk

Granting a tool that does not exist is dead weight and misleads the reader. Denying one is a guard that costs nothing today and protects if CC ever reintroduces MultiEdit. Collapsing both into "12 declarations of a nonexistent tool" would have removed a safeguard to satisfy a count. All 5 agents that lost a grant retain 2 Write/Edit grants, so test-agent-model-tool-correlation.sh's write-capable classification is unchanged.

Why context was pulled

The premise did not survive

The issue's case for deleting context: from 36 agents is that CC does not read it. The ignored-key array does not contain it. Deleting a field that may control agent context forking, and loosening three gates to allow its absence, cannot rest on an unverified premise. It needs its own proof, so it gets its own change.

Corrections found while surveying

PASSTHROUGH_KEYS            build-plugins.sh:97, not :100   (untouched either way)
test-agent-lifecycle-e2e    needs NO loosening: its context check is
                            already conditional on the field being present
category                    still live ork-side, correctly not a candidate

Verification

build · hooks-build              0
validate-frontmatter · counts    0
test:agents · test:manifests     0
test-build-drift                 0   (regenerated plugins/ committed)
model-tool-correlation           0
context-modes · agent-lifecycle  0
static-analysis                  0
security suite                   0
net                              22 files, -24 lines

Traps asserted untouched, not merely avoided. The ship script refuses to commit if scripts/build-plugins.sh, bin/validate-frontmatter.sh, tests/agents/test-agent-context-modes.sh or tests/performance/test-mcp-overhead.sh shows a diff, and it recounts that context: is still on 36 agents and the MultiEdit denies still on 7.