Hacketix for Claude Code

Keep what you ship secure without wondering, or spending time and tokens on a security review you do not understand.

Hacketix is an MCP server and Claude Code plugin. As your agent builds, it reviews each change for security issues, proves the ones it can by running the attack against your code on your machine, and checks that a fix blocks the attack without breaking what the code is for. It goes deepest on Next.js + Supabase + Stripe apps.

The final comparison is in progress: Hacketix is being run against Claude Code's /security-review and six other tools on 32 sealed cases. The numbers will be here when that run is scored, with their caveats.

Review Prove Fix with your approval Verify

Illustration. Browser code reads the Supabase service-role key. prove_finding reproduces the exposure, the fix goes in only with your approval, and verify_fix checks that it blocks the attack without breaking what the code is for.

01Coding agents

Install with your coding agent

Copy this instruction and paste it into Claude Code. It asks the agent to do what the Install steps below say and nothing more: check the prerequisites, clone the release, install its dependencies, then tell you how to restart Claude Code with the plugin. It asks before any sudo command and changes no code in your project.

After the restart, paste the first-run prompt.

Codex and other MCP clients are untested; for them this page offers only the server command from Install: codex mcp add hacketix -- node ~/hacketix-release/hacketix/dist/src/index.js

Paste into Claude Code
Install the Hacketix plugin for Claude Code on this machine. Do only the steps below, and do not change any code in this project.

1. Check that `node --version` reports 22.15 or newer and that git is installed (`git --version`). If either is missing or too old, stop and tell me.
   On Linux, also run: sudo apt-get install bubblewrap socat ripgrep openssl
   On Ubuntu 24.04 and later, also run: sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
   On Windows, do all of this inside WSL2. Ask me before you run any sudo command.

2. Run:
   git clone git@github.com:Robertzu43/hacketix-release.git ~/hacketix-release
   cd ~/hacketix-release/hacketix && npm ci --omit=dev --ignore-scripts
   The clone uses SSH: my GitHub account must have accepted the invitation to hacketix-release and have an SSH key. If the clone fails, stop and tell me. If you are running as root on Linux, clone outside /root (for example /opt/hacketix-release) and use that path instead of ~/hacketix-release from here on.

3. You cannot load the plugin into this running session. Tell me to quit Claude Code and start it again in the project Hacketix should review, with:
   claude --plugin-dir ~/hacketix-release/hacketix
   then to type /mcp and check that a hacketix server is listed as connected (Claude Code may show its name with a plugin prefix).

4. Do not change any code in this project.

02The plugin

What it does and does not do

  • Proofs

    Twelve classes proven

    Twelve classes have a proof: Supabase RLS and definer views, keys shipped to the browser, committed secrets, Stripe webhooks, unauthenticated writes, IDOR reads, path traversal, client-side prices, TLS verification off, JWTs without expiry, SSRF.

  • Privacy

    What it sends when you sign in

    Signed-in Hacketix sends one small usage record per tool call: which tool ran, when, how long it took, whether it worked, which vulnerability classes it found and how the proofs and fixes came out, under a random id for your machine and each repository. It never sends code, file paths, names from your project, finding text or secret values. Records are deleted after 13 months. The full list is in the privacy document.

  • Platforms

    Where it runs

    Linux: everything. macOS: everything except the eight classes whose proof runs route code in the OS sandbox; those come back incomplete, never "secure". Windows: use WSL2. Node.js 22.15 or newer.

03Account

Sign in

Signed in as .

Your account token

Sign in to get a token.

Make one token per machine. It is shown once; make another if you lose it.

Your token

Put it where Hacketix reads it. macOS:

Terminal

Linux and WSL2:

Terminal

Without this file Hacketix works the same and sends nothing.

04By hand

Install

Or let your coding agent run these steps: copy the instruction.

  1. You need Node.js 22.15 or newer (node --version) and git. On Linux, also sudo apt-get install bubblewrap socat ripgrep openssl; on Ubuntu 24.04 and later, sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0. On Windows, do all of this inside WSL2.
  2. Accept the GitHub invitation to hacketix-release. The clone uses SSH, so your GitHub account needs an SSH key. Running as root on Linux? Clone outside /root (for example /opt/hacketix-release) and use that path below. Then:
    Terminal
    git clone git@github.com:Robertzu43/hacketix-release.git ~/hacketix-release
    cd ~/hacketix-release/hacketix && npm ci --omit=dev --ignore-scripts
  3. Optional: make a token above and run its command on this machine.
  4. Claude Code is the only client Hacketix has been tested with. Start it in the project Hacketix should review:
    Terminal
    cd /path/to/your-app
    claude --plugin-dir ~/hacketix-release/hacketix
    Type /mcp: a hacketix server is listed as connected (Claude Code may show its name with a plugin prefix). In a repository with a package.json or a supabase/ folder, the session opens with Hacketix saying it has no baseline for this repository yet.
  5. Codex and other MCP clients are untested. Hacketix is an MCP server over stdio, so a client that can start node ~/hacketix-release/hacketix/dist/src/index.js may load it. The hooks and the skill belong to the Claude Code plugin, and adapters for Cursor, Codex and Gemini CLI are on the roadmap, not built. To try Codex anyway, register that same command (untested), then start Codex in your project:
    Terminal
    codex mcp add hacketix -- node ~/hacketix-release/hacketix/dist/src/index.js
    cd /path/to/your-app && codex
    Without the hooks and the skill, the paste prompt below for Codex repeats the core of the server's own instructions.
  6. Updates: git -C ~/hacketix-release pull && (cd ~/hacketix-release/hacketix && npm ci --omit=dev --ignore-scripts).

05First run

First run: paste this

Claude Code (the plugin already tells the agent how to work; this makes the first run visible):

Prompt
Use Hacketix on this repository: call diagnose_repository, show me its report exactly as it comes back, then tell me which items are must fix, which are only suspected, and what you would fix first. Do not change any code yet.

Codex or another client (untested; the plugin's hooks and skill are not loaded there, so this repeats the core of the server's own instructions):

Prompt
This project has the hacketix MCP server. Before anything else, call its diagnose_repository tool on this repository's root and show me the report exactly as it comes back. After each change you make, call review_change on the repository. From now on, when Hacketix reports a finding: prove it with prove_finding before calling it a vulnerability; never call an incomplete or not_reproduced proof secure; for a reproduced finding, or an incomplete medium-confidence one (said to be unproven), propose the smallest fix with propose_fix, check it with verify_fix, show me the patch and apply it only after I approve; report anything else and change nothing; record each outcome with record_decision. Do not change any code yet.

What you should see: a report that ranks what it found (must fix, should fix, needs validation), then what was not ranked and what was checked, with no file changed. On macOS the eight classes whose proof runs route code cannot run it (Hacketix reports the OS sandbox unavailable there), so they come back incomplete, or not applicable when reading the code decides it; that is expected, not a bug.