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.
> add an index on tasks.updated_at — the board query is slow
● Write(apps/api/migrations/0042_tasks_updated_at.sql)
⎿ PreToolUse:Write — ✗ Denied by CC
zone schema · risk high
owner ana@acme.dev
task CC-42 declared no protected zones
reason path is in a zone the task never asked for
● The schema zone is closed to CC-42. Asking its owner rather than looking for another way in.
● Bash(cycle request-access --zone schema --mode write --reason "the board query needs an index" --alternative "hand the DDL to the owner")
⎿ REQ-7 is with the zone owner
approve or deny: https://dash.commitcycle.com/requests
The hook refuses the write before it lands, names the zone and its owner, and the agent asks for access instead of looking for another way in. Claude Code is where this block has been seen working.
Install
/plugin marketplace add pow-paulinho/commitcycle-plugin
/plugin install commitcycle@commitcycleIt brings its own binaries. There is no npm install and nothing is put on your PATH; the cycle command the skills ask you to run is a separate npm i -g commitcycle. Outside the project it writes only ~/.commitcycle/, for sign-in, pairing and the update check — and, when the hook's core cannot answer under the default open failure policy, one empty marker per session in the temp directory.
What release 0.1.25 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 | Six tools in release 0.1.25 (2026-10-12): the zone map, one-line intake, the interview, scoping, board status, and which tasks changed a file. Intake and scoping write to the board; none moves a task |
| The hook | The part that actually blocks a write, on PreToolUse and PostToolUse |
The Stop hook | On a task branch in a repository with a board, posts the agent's last reply to the task on the board and keeps a copy in .zones/state/replies/ |
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 six tools, and the line they do not cross
cc_zones, cc_intake, cc_interview, cc_scope, cc_status, cc_why. None of them starts work, issues a grant, or approves access to anything. A seventh, cc_search, which finds the tasks related to a request or to files, is on the trunk since 2026-10-13 and in no release yet.
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. Starting it is cycle start (or cc_start on the hosted connector), and the skill runs it only when you say so.
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. cycle init writes hook files — Claude Code's and Codex's by default, Cursor's and Windsurf's with --harness — only where a hook wrapper is already on disk; neither published package puts one there, so on your machine it writes none and the plugin's hook is the one that enforces — in Claude Code only, so Codex, Cursor and Windsurf get no hook there. Only Claude Code has been seen to deny on a real install. Where the others' files are written, they have never been exercised and are answered in Claude Code's reply format; Windsurf has no channel for a denial's reason, and Cursor's file wires preToolUse only.
- The hook decided in 68–83 ms at p95 against a 100 ms budget, measured on 2026-08-03 on the first hook build and an idle machine — and p99 touched 102 ms in one case. CC-1377 re-timed it in October 2026 on two cloud VMs: on the slower one wrapper and core reached 211–228 ms at p95 (load 0.74–1.04), and the hook's cost over a shell-launched node process was 84–111 ms there against 44–48 ms on the faster one, for the same code. Two hosts, not a survey.
- Claude Code's harness is fail-open in all four failure modes we measured against real sessions on 2026-08-03. That is why the plugin ships a wrapper that can close three of them when the repository's failure policy is set to closed — by default it lets the call through and tells the session — and why a CI check exists for the fourth, the one only CI can see, where the hook was never installed at all. That check runs only on CommitCycle's own repository today.
The mechanism in full is in the docs — the install reference, the zone model, and the MCP tools.
Questions this page answers
Will installing the plugin affect my other repositories?
No. Plugin hooks load user-wide, so the hook does run in every repository you open — which is why it was held back until it could tell "this repository never installed CommitCycle" from "this task has not been started yet". A repository with no zone map is left alone silently.
Do I need an account to use the Claude Code plugin?
Yes, to run tasks. The gate is the only issuer of a grant and it runs on the board, so with the hook installed and no board nothing can be opened and every write is denied. The zone map and the records are files you keep either way — but the loop needs a board, and the setup skill says so rather than offering a local-only answer that ends in a repository nobody can write to.