CommitCycle for Claude Code Shipped
CommitCycle for Claude Code
The plugin installs the part that says no. Areas of your codebase that are dangerous to change get an owner, work declares which of them it needs, and access is granted for one task on one branch — then taken back when the work is handed in.
Install
/plugin marketplace add pow-paulinho/commitcycle-plugin
/plugin install commitcycle@commitcycleIt brings its own binaries. There is no npm install, nothing is put on your PATH, and nothing outside the project you are working in is touched.
What it installs
| Component | What it does |
|---|---|
set-up-commitcycle | Sets a repository up by asking about it — which areas are dangerous, who approves each, which board it reports to |
start-work-inside-cc | Files and scopes the task before the work, so the rule arrives as an arrangement rather than as a refusal |
commitcycle MCP server | Five read-and-describe tools: the zone map, one-line intake, the interview, scoping, and board status |
| The hook | The part that actually blocks a write, on PreToolUse and PostToolUse |
Why installing it cannot break your other repositories
Plugin hooks load user-wide — they run in every repository you open, not only the one you set up. That is exactly why the hook was held back until it could tell "this repository never installed CommitCycle" from "this task has not been started yet". It could not, and answered deny to both, so a single install would have blocked every write in every unrelated project on the machine.
It can now. A repository with no .zones/zones.yml is left alone silently: allowed, nothing recorded, no advice — you should not be able to tell the hook ran. And an empty map is not the same thing as an absent one: that is a project that ran the setup and protected nothing, so a task is still required there.
The five tools, and the line they do not cross
cc_zones, cc_intake, cc_interview, cc_scope, cc_status. None of them starts work, issues a grant, or approves access to anything.
That is not an oversight to be fixed later. An approval arriving through a tool the agent calls is authenticated by a token the agent holds, so a board could not tell your yes from the agent's own. The tools describe work. A person starts it.
Why a board is not optional
The zone map, the audit of what is dangerous and the records of what each task declared are files in your repository, and they stay yours. What needs a board is the loop: the gate is the only issuer of a grant, and it runs there. Install the hook with no board and nothing can open anything — every write is denied, including the unprotected paths. So the setup skill asks for the board rather than offering a local-only mode that ends in a repository nobody can write to.
Where this stops
The zone model is agent-agnostic; the enforcement point needs one small adapter per harness. Claude Code, Codex, Cursor, Augment, Copilot and Devin CLI all expose the same primitive — a pre-tool-call hook that can return deny — so the adapters are thin. Today one is shipped, and it is this one.
- The hook decides in 68–83 ms at p95 against a 100 ms budget — and p99 touched 102 ms in one case. The margin is thin and the levers are named.
- Claude Code's harness is fail-open in all four failure modes we measured against real sessions. That is why the plugin ships a wrapper that closes three of them, and why a CI check exists for the fourth — the one only CI can see, where the hook was never installed at all.
The mechanism in full is in the docs — the install reference, the zone model, and the MCP tools.