tanav.aiScanLeaderboardResearchBlogGet Started
Open appTry free scan →
New — Runtime Enforcement

Stop it before it runs —
not just after you scan it

Static scanning tells you what's risky before you install it. Runtime enforcement reuses the exact same policy verdict your CI gate already calls — enforced live, at the moment someone tries to run something.

3
runtime surfaces: hook, watch, SDK
0–100
same deterministic score, enforced live
Fail-open
never bricks a session on error
1Claude Code hook — block risky installs before they execute

Intercepts git clone, npx, uvx, and pip install commands before they run, checks them against your org policy, and blocks on a BLOCK verdict. Fails open on every error path — a broken check never bricks a session.

$ pip install tanav
{ "hooks": { "PreToolUse": [ { "matcher": "Bash", "hooks": [ { "type": "command", "command": "python3 -m cli.hooks.pretooluse" } ] } ] } }
Add to .claude/settings.json. Requires TANAV_API_KEY. Get your key →
2tanav watch — alert the moment a tool description changes

Re-scans your targets on an interval and fingerprints risk score + finding set. Same signal CHK-124 already tracks — running continuously instead of only at scan time.

$ tanav watch --repo https://github.com/your-org/your-repo --interval 3600
Add --webhook for Slack alerts, or --once to run it from your own cron instead of the built-in loop.
3Policy-check SDK — one line in any agent loop

Not on Claude Code? Import the same check directly — works in Cursor, Windsurf, or any custom agent runner. Never silently passes: raises if there's no key or the request fails, so the caller decides what fail-open means for them.

from cli.policy_check import check verdict = check("your-org/your-repo") if verdict["verdict"] == "BLOCK": raise RuntimeError(verdict["reason"])
Same verdict your CI gate and the PreToolUse hook already use — one policy, enforced everywhere.
or set your org policy first
Every surface enforces the same policy
Define your allowlist, blocklist, and score threshold once — the hook, watch, SDK, and CI gate all read it.
Set up your policy →