Policies
Review Values That Look Like Secrets
Review Values That Look Like Secrets: what it does, its label on each agent, what it misses, and examples.
Catalog policy scan-secrets-entropy, version 0.1.4, labelled asks on Claude Code.
What it does
Friction, not a security boundary: asks a person before a write adds secrets scan-secrets misses -- high-entropy values (16-150 chars) by secret-like keys, GitHub/npm tokens with valid checksums, Stripe test keys, Slack/AWS key-id shapes, Luhn-valid cards. Asks a person (HP01 entropy is a heuristic, so it asks rather than blocks). Misses: values split across lines, over 150 chars, cut by # or & when unquoted, under other key names, written like code (a.b(), ALL_CAPS, words, URLs, paths), wrapped in a call, parens or concatenation, in XML, or padded with control characters.
On each agent
| Agent | Label | What it does there |
|---|---|---|
| Claude Code | Asks | Asks on an agent's file writes and at turn end |
| Cursor | Blocks | Refuses an agent's file writes and refuses at turn end, because this client cannot prompt at either point |
| Codex | Blocks | 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 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 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
Values split across lines, over 150 chars, cut by # or & when unquoted, under other key names, written like code (a.b(), ALL_CAPS, words, URLs, paths), wrapped in a call, parens or concatenation, in XML, or padded with control characters.
Examples from its eval suite
Asks: A JSON config gains a client secret no vendor pattern names, as a quoted-colon pair.
Allowed: A config assigns a UUID to a service key.
More
Built from engine 5a4b6287a46e and catalog 1e60d211c1bb.