LLM Safe Haven

August 22, 2026 · View on GitHub

Socket Badge npm version License: MIT

Harden your AI coding agent in 60 seconds. Zero dependencies, offline by default, nothing written outside your agent's own config.

npx llm-safe-haven

It detects your installed agents, installs security hooks, scans for exposed secrets and risky MCP servers, and scores the result:

LLM Safe Haven -- Security Scorecard

  Detected agents:
    + Claude Code    -- Level 3 (hooks + audit + sandbox)
    + Cursor         -- Level 1 (ignore files + advice)
    . Windsurf       -- not installed

  Security Level: 2 of 4

Commands

npx llm-safe-haven               # Install hooks and harden (default)
npx llm-safe-haven --dry-run      # Preview without changing anything
npx llm-safe-haven audit          # Check security posture (0 clean / 1 findings / 2 a scan didn't finish)
npx llm-safe-haven audit --json   # Machine-readable for CI
npx llm-safe-haven scan           # Find exposed .env files (0 none / 1 found / 2 scan didn't finish)
npx llm-safe-haven scan --supply-chain  # Scan for ChainDrop/Shai-Hulud IOCs (macOS/Linux)
npx llm-safe-haven scan --mcp     # Scan MCP server configs (10 agents) -- the CI gate for MCP findings
npx llm-safe-haven scan --mcp --json    # Scan MCP server configs (JSON output)
npx llm-safe-haven scan --mcp --online  # Opt in to registry provenance checks
npx llm-safe-haven update         # Update hooks to latest

Exit codes

CodeMeaning
0Clean — the scan completed and found nothing
1Findings — act on them (for audit: also a completed posture below Level 2)
2The scan did not finish — unknown, never clean

An incomplete scan is never reported as clean, and a real finding beats incompleteness. Gate CI on the exit status — not on audit --json's overallLevel alone, because an incomplete scan is capped at 2, the same value as the Level-2 pass threshold. The full contract — including what changed for scan in v0.7 and what happens when none of the default scan roots exist — is in Exit Codes and Scan Scope.

Security Levels

LevelNameWhat It Means
0ExposedNo hardening
1BasicHooks installed
2Guarded+ Audit logging + no .env files
3Hardened+ Credential proxy + deny rules + clean MCP scan
4Fortified+ Container isolation + network restrictions

Supported Agents

llm-safe-haven detects and hardens 16 agents. The tier says what the tool actually configures today — not how much we care, and never more than the vendor's own docs support. Full wires the agent's hook system. Solid writes an ignore file the agent's documentation says it honours. Advise means no repo-local control we can depend on, so you get detection and guidance. Ignore files are best-effort context exclusion, not a hard secret boundary — every Solid-tier guide says so.

AgentTierWhat It Configures
Claude CodeFullHooks (bash-firewall, secret-guard, config-guard, audit-logger), settings.json wiring, SHA256 hook-integrity verification, audit-log freshness check
CursorSolid.cursorignore; workspace-trust + auto-run guidance
WindsurfSolid.codeiumignore; limitation warnings (no sandbox, no hooks)
ClineSolid.clineignore
Continue.devSolid.continueignore; config API-key warning
Gemini CLISolid.geminiignore; config-review guidance
AiderSolid.aiderignore; project .env key scan — deprecated: unmaintained upstream
GitHub CopilotAdvise.copilotignore is inert (Copilot's real exclusions live server-side); reads VS Code workspace trust
Codex CLIAdvise.codexignore + sandbox/approval guidance — has a Claude-Code-style hook system we don't wire yet (nearest path to a second Full)
GooseAdvise.gooseignore; config.yaml review — its docs name .gitignore, not this file
AntigravityAdvise.antigravityignore — its docs name .gitignore, not this file
AugmentAdviseGuidance only (no ignore-file mechanism)
Amazon QAdviseIAM / AWS access guidance — deprecated: AWS ends support for the IDE plugins and paid subscriptions 2027-04-30 (superseded by Kiro)
JetBrains AIAdviseGuidance only (settings are an opaque IDE blob)
Replit AgentAdviseGuidance only (code executes off-machine)
Zed AIAdviseGuidance only (tool permissions are user-scope)

The Solid/Advise line is a codified rule, not a judgment call: computeExpectedTier() in lib/agents/base.js grades every module, and a meta-test fails CI on a mis-tier. Roadmap: Codex CLI to Full, then the other agents with Claude-Code-compatible hooks (OpenHands, Droid, CodeBuddy, Crush, Trae), and pi for Solid.

Go Deeper

Project

Why. In April 2026, three AI coding agents leaked secrets through a single prompt injection (the "Comment and Control" incident). Building defences against that ran straight into platform limits — e.g. anthropics/claude-code#52471, where the macOS sandbox blocks the Unix sockets credential managers rely on — so we built the fixes and documented everything.

Status. Pre-1.0, on npm with SLSA provenance, under regular development; adoption is small and growing. The strength is depth over reach: a threat model tracking 30+ real incidents, hardening guides for six agents, a supply-chain scanner built against actual attack waves, and a doc-drift guard that fails CI when these pages stop matching the code.

Security. This is itself a security tool, so its own supply chain is treated as safety-critical. Report vulnerabilities privately per SECURITY.md — never in a public issue.

Governance. Maintained by @pleasedodisturb as sole maintainer and final decision-maker; decisions happen in the open via issues and PRs. Contributions are welcome — to add an agent, create lib/agents/<your-agent>.js implementing detect, harden, audit (see lib/agents/cursor.js). Cross-agent working contract: AGENTS.md.

License. MIT