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.

Claude Code — ~/acme-webplugin · commitcycle

> 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@commitcycle

It 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

ComponentWhat it does
set-up-commitcycleSets a repository up by asking about it — which areas are dangerous, who approves each, which board it reports to
start-work-inside-ccFiles and scopes the task before the work, so the rule arrives as an arrangement rather than as a refusal
commitcycle MCP serverSix 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 hookThe part that actually blocks a write, on PreToolUse and PostToolUse
The Stop hookOn 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 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.