Stop telling Claude to sweep .claude/settings.json: harness blocks it, CI owns the bump #92
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
agentic-os/AGENTS.md("Coily-Managed Lockdown Files") tells agents to sweep.claude/lockdown-deny.shand.claude/settings.jsoninto whatever commit they are already making, last-pushed wins, don't ask. But the Claude Code harness hard-blocks Claude from committing or pushing.claude/settings.json: the auto-mode classifier flags it as Self-Modification ("a hard block that user authorization cannot clear"). Observed during a fleet sync on kai-server 2026-05-28: 9 repos pushed before the classifier engaged, then it began denying, leaving the sweep half-applied.Resolution: the harness block is correct, the policy is wrong
Claude rewriting and committing its own permission file is exactly the self-modification an agent must never be able to do. The boundary can only be widened by something outside the agent it constrains. So the block stays, and the AGENTS.md instruction must change:
.claude/settings.json(orlockdown-deny.sh). Remove the "sweep them into your commit" guidance for these two files. Update the AGENTS.md section to say the agent leaves them dirty and does not stage them.coily setupruns. See agentic-os-kai#457.Secondary: classifier non-determinism
The same action (commit+push
settings.json) succeeded on 9 repos then was hard-denied in the same batch. It should block consistently. Worth a separate report to the harness owners, noted here for the record.Doc edit needed here
Rewrite the "Coily-Managed Lockdown Files" section of
agentic-os/AGENTS.md: agents leave the files dirty, never stage them; CI owns the canonical-bump; the files stay committed for fail-closed bootstrap.Lockdown-file sweep policy contradicts harness self-modification block on .claude/settings.jsonto Stop telling Claude to sweep .claude/settings.json: harness blocks it, CI owns the bump