InstaleO plugin, com o hook, instala sem convite

Vários agentes de código em IA num repo. Um reverte o outro em silêncio.

O CommitCycle dá a esse trabalho um lugar para morar. Os paths que doeriam ganham um owner e um risk level; cada agente, no seu próprio checkout, recebe acesso para uma task num branch, e esse acesso expira sozinho. Mover um muro custa uma aprovação — com um motivo, e fica registrado.

O CommitCycle é construído sob o CommitCycle, e funciona hoje — boards, o connector para agentes, a configuração de repositórios e o plugin que nega uma escrita antes que ela aconteça, que qualquer pessoa pode instalar. O que precisa de convite enquanto isto é novo é um board, e isso é uma fila, não uma página de "em breve".

Claudeconnector · CommitCycle

File a task: the board export times out on large boards.

commitcycle · cc_intake

Filed CC-58 in Triage: Export times out on large boards

A draft of the four answers — correct anything before I save it:

Goal
A large board exports in one request instead of timing out.
Non-goals
No change to the export format.
Zones
None — the export code is unprotected.
Criteria
A 2,000-task board exports without a timeout.

Looks right. Save it.

commitcycle · cc_scope

Saved CC-58, and moved it to Todo — all four answered.

CC-58 is ready. Whoever picks it up starts it in the repository: cycle start CC-58.

Adicione a URL do connector do board e o Claude registra e delimita a task pelo chat — sem instalar nada. Ele não aprova acesso: quem decide são o gate e o owner da zone.

Cursor — acme-webMCP · commitcycle

Pick up CC-58.

commitcycle · cc_start

CC-58 is In Progress.

task/CC-58-export-times-out-on-large-boards

No protected zone is open — everything this task declared is unprotected.

commitcycle · cc_why

apps/web/src/export.ts — 1 task(s), newest first:

CC-41 · Done · Stream the export instead of building it in memory

CC-41 already streams the export, so the timeout is the query. Paging it.

Edited export.ts +2 −2

commitcycle · cc_submit

CC-58 is In Review. The zones it had open are closed again.

O mesmo connector no Cursor: inicie a task, veja por que um arquivo mudou da última vez, entregue o trabalho. Só com o connector, nada na máquina bloqueia uma escrita.

dash.commitcycle.com/boardCC

✓ gate: four fields answered, no high-risk zone to approve

REQ-7 · schema · write · CC-42

Reason: the board query needs an index

Instead: hand the DDL to the owner

1 hour4 hoursUntil the task closes

✓ Approved — schema is open to CC-42 for 4 hours

No console uma task passa pelo gate para In Progress, e o owner de uma zone responde a um access request — por uma hora, quatro, ou até a task fechar.

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

O hook recusa a escrita antes que ela aconteça, nomeia a zone e o owner, e o agente pede acesso em vez de procurar outro caminho. O Claude Code é onde esse bloqueio já foi visto funcionando.

~/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

No terminal, o cycle faz cada passo com um comando: start traz o grant para a máquina, submit devolve.

O que o CommitCycle faz

Quatro coisas, na ordem em que você as encontra: ele captura o trabalho, entrega ao agente o contexto com que este repo funciona, mantém o agente dentro dos limites que a task declarou, e deixa um registro do que de fato aconteceu.

Cada número aqui traz os seus limites impressos ao lado

Tirados de audit records deste repositório, não de um benchmark feito para ganhar.

CC-3

25 / 25

Vetores de escape de Bash contidos

sed -i, python -c, tee, redirecionamentos, git checkout -- e um npm run cujo script de build escreve num path protegido. Executados contra um fixture repo e verificados byte a byte, não simulados.

O que isso não prova Medido em 2026-08-03. Paths ignorados pelo git dentro de uma zone não estão cobertos — e o .env é ignorado pelo git e é o segredo por excelência.

CC-3

0 / 20

falsos positivos em comandos comuns

O allowlist conservador barrou 24 de 24 ataques e bloqueou 8 de 20 comandos legítimos, mkdir e cp entre eles. Uma taxa de 40% de falsos positivos é a desinstalação da segunda semana chegando com o placar perfeito, então o design foi invertido.

O que isso não prova Vinte comandos que nós mesmos escolhemos, medidos em 2026-08-03 — não vinte tasks reais. No primeiro dia neste repositório ele recusou três comandos legítimos em cinco minutos. A fase 6 é o teste de verdade e ainda não rodou.

CC-1

68–83 ms

adicionados a uma tool call, p95

Em 120 inicializações de processo a frio — o hook é um processo novo a cada chamada, e tempos a quente o teriam favorecido.

O que isso não prova Uma máquina, ociosa, em 2026-08-03, com o primeiro build do hook. O p99 chegou a 102 ms contra um orçamento de 100 ms. O CC-1377 mediu de novo em outubro de 2026 em duas VMs na nuvem: na mais lenta, wrapper e núcleo chegaram a 211–228 ms no p95 (carga 0,74–1,04), e o custo do hook sobre um processo node lançado por shell foi de 84–111 ms lá contra 44–48 ms na mais rápida, com o mesmo código. Dois hosts, não um levantamento.

Quatro coisas quebram quando um time aponta agentes para um mesmo repo.

Como compartilhar contexto entre agentes de código em IA num time?

Contexto que mora num notebook

Um vault privado do Obsidian, um CLAUDE.md que ficou para trás há três sprints, um AGENTS.md em que ninguém confia. Manutenção por pessoa, respostas por pessoa.

cycle sync escreve o mapa de zones entre marcadores no AGENTS.md, sem tocar em nada fora deles — o mesmo arquivo para cada pessoa e cada agente, revisado como código. A task ativa, as zones abertas e os non-goals vão para um CLAUDE.local.md ignorado pelo git, que o Claude Code carrega.

O bloco de contexto

Como rodar vários agentes de código em IA no mesmo repositório sem que um sobrescreva o outro?

Dois agentes, um repo, nenhum árbitro

Os dois convencidos de que o mesmo módulo é deles. Um reverte o outro em silêncio, e a correção honesta é voltar a um agente por vez.

Um grant fica preso a uma task e a um branch, abre só as zones que essa task declarou e expira sozinho — então sair dele é recusado na hora, e não descoberto na revisão. Worktrees isolam; não decidem. O CC confina cada checkout — dois agentes no mesmo diretório compartilham a task e o grant dele — e não arbitra entre eles.

Grants e access requests

Como impedir que um agente de código em IA edite arquivos que não deveria tocar?

Um prompt não é uma permissão

O AGENTS.md pede ao agente que fique fora de migrations/. Pedir funciona até o momento em que não funciona, e nenhuma linha em nenhum log mostra que não funcionou.

Marque os paths irreversíveis como zones com um owner e um risk level — escrever em qualquer zone exige um grant, seja qual for a default policy dela (deny fecha também a leitura), e um grant abre só o que a task declarou, e só até expirar. O modelo de zones é agnóstico ao agente; o ponto de enforcement precisa de um adaptador pequeno por harness, e hoje só o do Claude Code foi visto negando numa instalação real. 25 de 25 vetores de escape contidos em 2026-08-03, num corpus que nós mesmos escolhemos.

Zones, e o que não declarar

Dá para criar e delimitar tasks para um agente de código sem sair da sessão em que você está?

Descrever o trabalho custa mais do que fazê-lo

A task mora numa aba do navegador em que você não está, então o trabalho começa sem descrição e o primeiro registro do seu escopo é o diff.

Um servidor MCP registra e delimita a task de dentro da sessão em que você já está — mapa de zones, quatro campos, salvo. Nenhuma ferramenta ali aprova acesso ou contorna o gate: o cc_start do connector hospedado pede a ele, e mover uma task é decisão do gate, tomada pelas mesmas regras seja qual for o cliente que pergunte.

O servidor MCP

Três camadas: uma aconselha, outra nega, outra confere de novo

Camada 1

Contexto

AGENTS.md

Diz ao agente as regras numa linguagem que ele lê, e não impõe absolutamente nada. Esta camada é documentação, e preferimos chamá-la assim.

consultiva

Camada 2

Policy enforcement

Hook anterior à tool call

Confere cada tool call contra o grant em disco e nega o que ele não cobre. Nunca responde allow, então os avisos de permissão do seu harness continuam valendo. Nunca toca a rede, então uma queda não abre uma zone. O modelo de zones é agnóstico ao agente — esta camada precisa de um adaptador pequeno por harness, e só o do Claude Code foi visto negando numa instalação real.

bloqueante

Camada 3

Check do pull request

GitHub Action

Roda de novo o mesmo matching de zones contra o pull request, com a mesma implementação. Confere o que a task declarou, não o grant; passa quando o board não responde; e só segura um merge onde a proteção de branch o exige. Roda só neste repositório e não está publicado.

confere

O que o CommitCycle não vai fazer

Decisões da spec, não um roadmap disfarçado.

Rodar o seu código

Nem os seus testes, nem as suas migrações, nem o seu deploy. O CC pede evidência e a confere. Qualquer coisa executada em seu nome é blast radius que estaríamos acrescentando — a única exceção são os comandos spike_cleanup e spike_verify que você mesmo configura, e que o cycle discard executa.

Hospedar ambientes de preview

Evidência visual é uma URL que você já tem, ou uma captura que você anexa. Hospedar previews é um produto, não o efeito colateral de um item de checklist.

Substituir o seu tracker

A primeira versão traz o próprio board — cinco estados fixos são o que permite ao gate significar alguma coisa. O intake é uma API — um POST com um título — então uma pequena ponte que você mesmo escreva pode alimentá-lo a partir do que você usa hoje.

Impor qualquer coisa via MCP

O servidor MCP registra, redige e reporta, e o connector hospedado pode pedir ao gate que inicie, entregue ou feche uma task. Nenhuma ferramenta aprova acesso, e nenhuma impõe nada. Um agente escolhe se chama uma ferramenta, e um limite que dá para escolher não chamar não é um limite.

Suportar Windows, por enquanto

Só macOS e Linux, e é a única recusa desta lista que não é para sempre: a D-25 deixa o Windows para depois do MVP, e nenhuma task do board está construindo isso. Dizer isso agora sai mais barato para os dois lados do que uma matriz de suporte que em silêncio não inclui você.

Peça um convite

O cadastro está fechado enquanto isto é pequeno. Não porque não haja nada para usar — há, e os passos do quickstart são os de verdade — mas porque quem usa cedo recebe resposta pessoalmente, e isso deixa de ser verdade a partir de um certo número.

Conte o que você colocaria atrás de um gate. Duas perguntas, e elas decidem o que é construído em seguida tanto quanto decidem a fila. Se o seu setup é um que conseguimos suportar bem hoje, você terá notícias rápido; se não for, preferimos dizer isso a deixar você descobrir.

  • O seu endereço vai para o nosso próprio banco de dados e para nenhum outro lugar.
  • Gratuito para todo mundo que entrar nesta fase, e você vai ouvir isso de nós antes que mude.

Já tem conta? Entre.

Qual agente você mais usa?
Quantas pessoas fazem commit no repo?

Duas perguntas porque as respostas decidem o que é construído em seguida e quem conseguimos atender bem hoje — não porque um CRM quer. Sem pixels de anúncio, analytics só se você aceitar, sem aluguel de lista, e só escrevemos sobre o que você pediu.