Claude Code First, specification version 0.1.0. The plain-language guide
Version 0.1.0. Grade R2/S2.
F401 A committed settings file lost permission entries during a session, and the loss reached a commit about something else
| Field | Value |
|---|---|
| Status | active |
| Topic | Environment, permissions, and agent-facing products |
| Grade | R2/S2 |
| Cases | freewilly |
| Contrary | none |
| Harness facts | H7; O1 (observed, not documented) |
Claim
A committed .claude/settings.json was rewritten during a session, twice, removing permission entries without any message, and the second time the removal was committed under an unrelated task by a commit tool that stages the whole tree.
Mechanism
The shared project settings are one of several layers the harness reads (H7), and a session that writes to that file leaves it changed in the working tree. Nothing tells the agent or the person that entries went missing. A commit tool that stages everything then carries the change into whatever commit comes next, where its message does not mention it. What rewrote the file is not established: the commit that restored it names the harness, while the test and the ledger name an open session.
Observations
- freewilly. On 2026-08-14 the DD112 commit removed 15 lines from the committed settings,
among them Task, SendMessage and CronCreate, though nothing in that task called for it [freewilly@d01fcb3]. Two minutes later the entries were restored with the statement "The harness rewrote .claude/settings.json mid-session" [freewilly@ac7e7ec], "dropping fifteen entries" [freewilly@ac7e7ec]. It was not the first time: "the second time in this session that file has been trimmed under me" [freewilly@ac7e7ec], and "the first was caught before a commit" [freewilly@ac7e7ec]. The message names the carrier as 46ec80f, which does not exist; the carrier was d01fcb3, the restoring commit's parent. DD115 was filed eight minutes later [freewilly@5e41114] and shipped as "DD115 the committed agent configuration is guarded" [freewilly@646e121]: a build test records the incident, "Twice in one session fifteen entries vanished from" [freewilly@c1c2eaf:tests/FreeWilly.Preflight.Tests/PackagingTests.cs#L277] the allow list, and fails when a floor of granted tools or the guard's wiring is lost [freewilly@c1c2eaf:tests/FreeWilly.Preflight.Tests/PackagingTests.cs#L272-L336]. The ledger frames the cause as settings "rewritten by whatever session is open" [freewilly@c1c2eaf:docs/CHANGELOG.md#L199]. A fix to the commit tool was filed and dropped, because "the fix touches a commit tool every repository shares" [freewilly@c1c2eaf:docs/CHANGELOG.md#L201].
Independence
One project, two occasions in one session, separated by a restore of the file. The test is freewilly's own and appears nowhere else in the corpus.
Counter-evidence
None found at the pins. Two limits bound the claim. The component that rewrote the file is disputed between the commit message and the test, and no source records the harness version. And git log c1c2eaf -- .claude/settings.json shows no change to the file after ac7e7ec, so the DD115 test has had no occasion to fail and has not been seen to.
Grade
R2: two occasions in one project, the second after the first had been put right. S2: the commits record the incident and its date. The count of fifteen entries measures the size of the loss, not the cause, and the claim does not rest on it; the test that encodes the remedy has not been seen to fail, so S4 is not reached.