CommitCycle CLI Shipped

The gate, the grant and the close, from your terminal

One command carries a task from a sentence to a branch with access attached, and one carries it back out with a record. Everything in between is ordinary work, done by whichever agent you like.

~/acme-webzsh

$ cycle start "Export times out on large boards" \ --goal "a large board exports in one request" \ --non-goals "no format change" \ --criteria "2,000 tasks export without a timeout"

board https://dash.commitcycle.com · acme/web

CC-58 is In Progress on task/CC-58-export-times-out-on-large-boards

open no protected zones — everything unprotected is yours already

record .zones/tasks/CC-58.md

$ cycle submit

CC-58 is now In Review

the grant is gone — protected zones are closed again

From a terminal, cycle does each step in one command: start brings the grant onto the machine, submit hands it back.

Install

npm i -g commitcycle

The package is commitcycle and the command is cycle. That split is deliberate: on every Unix machine cc is already the system C compiler, so a global cc would break node-gyp and every Makefile that never overrode $(CC). A governance tool that shadows a compiler is one people uninstall.

The daily loop

cycle start "the thing" \
  --goal "…" --non-goals "…" --criteria "…" \
  --topics backend,frontend        # intake → scope → branch → gate → grant → context
# ... work ...
cycle submit                       # In Progress → In Review, zones closed
cycle verify --close --evidence <url>   # the manifest, the checks, the audit record

The four fields are not decoration on that first line: the gate refuses a task without them and leaves it in Todo, so a start written without them stops before it opens anything.

Every way into In Progress — cycle start, the console's Start button, the connector's cc_start — is the same gate. There is no command that opens a zone on its own, which is the point: the moment a second door exists it becomes the one everybody uses in a hurry.

What it can do

CommandWhat it does
initSet the repository up and write the agent context — memory mode by default (no zones; every edit needs a task), or --mode governance to propose zones from the code
startIntake, scope, branch, gate, grant and context, in one call
statusWhat task is active, and exactly what is open to it right now
syncPush the zone map and events, pull the grant for this branch
request-accessAsk a zone's owner to open it — with a reason and an alternative
approve · denyAnswer a request for a zone you own from the terminal — from a paired machine, only on a one-member board. The console is the stronger door
submit · pauseHand the work in, or put it down without giving it up
verify --closeCheck the branch against what the task declared, then write the record
seed · challengeDraft playbooks from the codebase, then argue with them
doctorWhy is CommitCycle behaving like this?

Thirty-seven in cycle --help, as of release 0.1.25 (2026-10-12). The full list, flag by flag, is in the CLI reference.

Where it stops

The command reference is in the docs, and the model it acts on is the zone map.

Questions this page answers

Why is the command called cycle and not cc?

On every Unix machine cc is already the system C compiler. A global cc would break node-gyp and every Makefile that never overrode $(CC), and a governance tool that shadows a compiler is a governance tool people uninstall. The npm package is commitcycle; the command is cycle.