---
id: opaque-blob-guard
track: coding
version: 0.0.5
label: warns
keyword: warn
where: write turn-end
sha256: d00087e9913d5edd196910b87d386e5efa141ed3447b0f2bc46d7487a3c050ae
source: https://github.com/open-coder-ai/chock-catalog/tree/1e60d211c1bb767152c6ab0167932da06ab3a10f/base/opaque-blob-guard
catalog_ref: 1e60d211c1bb767152c6ab0167932da06ab3a10f
---

# Flag Hidden Binary Files in Tests

opaque-blob-guard · version 0.0.5

Warns — Warns on an agent's file writes and at turn end. Chock adds friction. It is not a security boundary. 

In a git repo: advisory (The agent reads the text, and nothing stops a violation.)



## What it does

Warns (observe rollout; never refuses yet) when a change adds or edits, in tests/, fixtures/, testdata/, spec/, m4/, vendor/, gradle/wrapper/: a file whose first bytes are an archive, executable, wasm or database signature (any extension), a random-looking non-media file over 100 KB, or a symlink out of the repo; m4/configure/Makefile text that decodes and evaluates; a gradle wrapper jar changed with no new distributionSha256Sum. Misses text-encoded or prefixed payloads, other folders.

## Its label on each agent

- Claude Code (tested): Warns — Warns on an agent's file writes and at turn end. Builder: /coding/builder/#client=claude-code&p=opaque-blob-guard
- Cursor (tested): Warns — Warns on an agent's file writes and at turn end. Builder: /coding/builder/#client=cursor&p=opaque-blob-guard
- Codex (tested): Warns — Warns on an agent's file writes and at turn end. If the hook errors, the action goes through (not witnessed; the vendor's row is only partly live-run). Builder: /coding/builder/#client=codex&p=opaque-blob-guard
- GitHub Copilot (tested): Warns — Warns at turn end only. 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). Builder: /coding/builder/#client=copilot&p=opaque-blob-guard
- Devin (tested): Warns — Warns at turn end only. It does not check a file write when it happens. If the hook errors, the action goes through (vendor docs only, not witnessed). Builder: /coding/builder/#client=devin&p=opaque-blob-guard
- Grok (tested): Not graded yet for Grok. Builder: /coding/builder/#client=grok&p=opaque-blob-guard
- goose (tested): Not graded yet for goose. Builder: /coding/builder/#client=goose&p=opaque-blob-guard
- Antigravity (tested): Not graded yet for Antigravity. Builder: /coding/builder/#client=antigravity&p=opaque-blob-guard
- OpenHands (untested): Not graded yet for OpenHands. Builder: /coding/builder/#client=openhands&p=opaque-blob-guard
- Kimi Code (untested): Not graded yet for Kimi Code. Builder: /coding/builder/#client=kimi-code&p=opaque-blob-guard
- Factory Droid (untested): Not graded yet for Factory Droid. Builder: /coding/builder/#client=factory-droid&p=opaque-blob-guard

## What it misses

This policy does not state what it misses.

## Examples

- Warns: A commit adds an archive under testdata/ with a .txt name (roadmap xz-in-testdata, the signature is what counts).
- Allowed: A person commits a binary fixture together with an allowlist entry holding its path and sha256.

## Latest change

0.0.5 · 2026-10-30 — Fix for Windows (IR-F45; tests in test_opaque_blob_nofollow.py). Reading a working-tree file no longer names \`os.O_NOFOLLOW\`, which Windows lacks, so the gate no longer faults on every in-scope change there. Where the flag is missing a symlink is still refused: the check before the open stops it. Behaviour elsewhere is unchanged.

## Provenance

- Tested by 17 of 17 cases run automatically
- SHA-256: `d00087e9913d5edd196910b87d386e5efa141ed3447b0f2bc46d7487a3c050ae`
- Catalog commit: https://github.com/open-coder-ai/chock-catalog/commit/1e60d211c1bb767152c6ab0167932da06ab3a10f
- Source: https://github.com/open-coder-ai/chock-catalog/tree/1e60d211c1bb767152c6ab0167932da06ab3a10f/base/opaque-blob-guard (catalog path `base/opaque-blob-guard`)
- Presets: Packages and supply chain
- JSON: `/api/coding/policies/opaque-blob-guard.json`
- Report a problem: https://chock.sh/report/?policy=opaque-blob-guard&version=0.0.5&page=%2Fcoding%2Fpolicies%2Fopaque-blob-guard%2F
