secrets/aws-access-keyconfig/deploy.py:9
An AWS access key ID and secret would be written to a tracked file. Write blocked.
- AWS_SECRET = "wJalr…"
+ AWS_SECRET = os.environ["AWS_SECRET"]Pre-release · local · Rust
int3 checks every file your coding agent writes, before and after the write, and hands the agent a fix in the same turn.
⏺ Write(src/lib/billing.ts)
✕ int3 blocked this write
secrets/stripe-live-key critical [pattern]
src/lib/billing.ts:4 const key = "sk_live_…"
A live Stripe secret key would be committed to source.
fix: read it from process.env.STRIPE_SECRET_KEY
⏺ Agent applied the fix and retried.
⏺ Edit(src/routes/users.ts)
! int3 found 1 issue after the write
ts/sql-injection high [dataflow]
req.query.id src/routes/users.ts:12
→ findUser(id) src/db/users.ts:7
→ db.query(`… WHERE id = ${id}`)
fix:
- db.query(`SELECT * FROM users WHERE id = ${id}`)
+ db.query("SELECT * FROM users WHERE id = $1", [id])
> // how it works
int3 scans the proposed file in memory. It blocks only secrets and high-confidence critical findings, and tells the agent why.
secrets/aws-access-keyconfig/deploy.py:9
An AWS access key ID and secret would be written to a tracked file. Write blocked.
- AWS_SECRET = "wJalr…"
+ AWS_SECRET = os.environ["AWS_SECRET"]int3 follows data across files and returns findings with a minimal patch into the agent's context, so it corrects itself in the same turn.
py/path-traversalapp/views.py:21 → app/storage.py:14
request.args['name'] reaches open() through read_upload() without a path check.
- open(base / name)
+ open(safe_join(base, name))// why
// works with
Claude Code
PreToolUse and PostToolUse hooks. One-command setup is planned.
Any MCP agent
MCP server with scan_file, scan_diff and explain_finding
Cursor
Native hooks, as its hook API allows
Codex
Native hooks, as its hook API allows
// local-first
We are looking for teams that use coding agents every day. Tell us your stack and which agent you use.