Claude Code First, specification version 0.1.0. The plain-language guide

Version 0.1.0. Grade R3/S2.

F402 Permission prompts were treated as a cost to remove, and a hook that refuses named writes stood in for them

FieldValue
Statusactive
TopicEnvironment, permissions, and agent-facing products
GradeR3/S2
CasesShio, freewilly, roadkeep, polyweave
Contrarynone
Harness factsH4, H6, H7

Claim

Where the committed configuration shows a permission posture, it allows most tools by bare name, and the projects changed their tools to stop prompting; the control left in place of a prompt is a PreToolUse hook that refuses writes to named files, not a narrow allow list.

Mechanism

A prompt interrupts an agent that is meant to run a batch of tasks unattended, and a tool reached through a path that changes per version or machine prompts again on every new path. The projects removed both kinds of prompt: broad committed allow lists (H7), and one stable path for the tool they call most. What they kept is narrower: a hook on Edit, Write and Bash (H4) that denies an edit of a governed file with the command to use instead (H6), and never grants anything itself. The guard's design states why it never answers allow: "Silence is the allow." [roadkeep@91754240:src/roadkeep/guarding.py#L24]

Observations

Independence

Two independent origins at least. roadkeep's RK1689 is its own recorded defect. Shio and freewilly count as one: the vendoring commit carries the same subject in both, 13 minutes apart, Shio first, and the two allow lists have the same shape, so freewilly's posture is treated as copied from Shio. polyweave's surface was imported whole on its first day (see F400), so its allow list is not counted as a separate origin, though its form differs.

Counter-evidence

roadkeep also added a prompt on purpose: a shell command naming a governed file is "matched and answered with" [roadkeep@91754240:docs/CHANGELOG.md#L989] ask, because what the command does with the file is the user's call. So a prompt was kept where a refusal could not decide. freewilly's product will not grant permissions in a consumer's configuration: "an allowlist is a permission grant" [freewilly@c1c2eaf:tests/FreeWilly.Preflight.Tests/AgentDiscoveryTests.cs#L15], so the install proposes the line and writes none. winwright commits no allow list at all [winwright@861b82e:.claude/settings.json#L1-L38]; its posture is not observable at the pin. Claims about a local bypassPermissions mode in roadkeep and freewilly rest on uncommitted files and are not evidence. No committed control limits shell commands other than those naming a governed file.

Grade

R3: roadkeep and the Shio-freewilly pair are two independent origins in two projects. S2: the strongest observations are commits that record a prompt as a defect and remove it; the allow lists are configuration, and the test that holds freewilly's list has not been seen to fail.