# Protect CI Workflows

Protect CI Workflows: what it does, its label on each agent, what it misses, and examples.

Catalog policy protect-ci-workflows, version 0.2.7, labelled asks on Claude Code.

> Ask the user before running any command on this page: each one changes how their agent or repository behaves.

## What it does

Asks a person before an agent weakens the checks that review its work. Shell guard refuses writes to .github/workflows/, .github/actions/, .github/dependabot.y*ml (redirect, rm/mv/tee/sed -i, cp into, git checkout/restore, cmdlets); reads and \`chock sync\` pass. Edit/Write: tool_use gate asks a person before a write to CI, hook or bot config (GitLab, Jenkins, CircleCI, CODEOWNERS, husky, more). Not judged: deletions, empty writes, shell writes to non-GitHub CI paths; plugin installs ship no gate.

## On each agent

| Agent | Label | What it does there |
| --- | --- | --- |
| Claude Code | Asks | Refuses a matched shell command before it runs. Asks on an agent's file writes and at turn end |
| Cursor | Blocks | Refuses a matched shell command before it runs. Refuses an agent's file writes and refuses at turn end, because this client cannot prompt at either point |
| Codex | Blocks | Refuses a matched shell command before it runs. Refuses an agent's file writes and refuses at turn end, because this client cannot prompt at either point. If the hook errors, the action goes through (not witnessed; the vendor's row is only partly live-run) |
| GitHub Copilot | Blocks | Refuses a matched shell command before it runs. Refuses at turn end only, because this client cannot prompt there. It does not check a file write when it happens. If the hook errors, the action goes through (not witnessed; the vendor's row is only partly live-run) |
| Devin | Blocks | Refuses a matched shell command before it runs. Refuses at turn end only, because this client cannot prompt there. It does not check a file write when it happens. If the hook errors, the action goes through (vendor docs only, not witnessed) |
| Grok | Not graded | Not graded yet for Grok |
| goose | Not graded | Not graded yet for goose |
| Antigravity | Not graded | Not graded yet for Antigravity |
| OpenHands | Not graded | Not graded yet for OpenHands |
| Kimi Code | Not graded | Not graded yet for Kimi Code |
| Factory Droid | Not graded | Not graded yet for Factory Droid |

## What it misses

This policy does not state what it misses.

## Examples from its eval suite

Refused: A request redirects new content over a workflow file.

`echo "on: push" > .github/workflows/ci.yml`

Allowed: A request reads a workflow file to inspect it.

`cat .github/workflows/ci.yml`

## More

- [The policy on the catalog pages](https://chock.sh/coding/policies/protect-ci-workflows/)
- [Source at the pinned catalog commit](https://github.com/open-coder-ai/chock-catalog/tree/1e60d211c1bb767152c6ab0167932da06ab3a10f/base/protect-ci-workflows)


---

Built from engine [5a4b6287a46e](https://github.com/open-coder-ai/chock/commit/5a4b6287a46e07f9f856d9bbe10622bd1ff2e021) and catalog [1e60d211c1bb](https://github.com/open-coder-ai/chock-catalog/commit/1e60d211c1bb767152c6ab0167932da06ab3a10f).
