EEnforceeRun an audit

not two browser tabs

Enforcee lives inside the session, not beside it.

The website is a place to try it. The real product is a plugin and a command-line tool that sit in your project and run on every turn. A forbidden command is denied before it executes, not described to you afterwards.

Five steps, about a minute

  1. 01

    Add the marketplace

    One line, once per machine. It points Claude Code at this repo.

    /plugin marketplace add 7patriksz-art/Enforcee
  2. 02

    Install the plugin

    Brings the guard hooks, the audit skill and the /receipt command with it.

    /plugin install enforcee@enforcee
  3. 03

    Drop in your licence

    Once per machine. It is a signed line of text checked on your own disk — no activation server, no phone-home, and it keeps working on a plane.

    mkdir -p ~/.enforcee && echo "<your licence>" > ~/.enforcee/licence
  4. 04

    Compile your rules into a policy

    Run this in your project root. It reads your ruleset and writes .enforcee/policy.json. Nothing leaves the machine.

    npx enforcee guard CLAUDE.md
  5. 05

    Restart Claude Code

    Hooks load at startup. From here the guard is live in every session in that project.

What it does once it is in

Blocks

A PreToolUse hook denies the call before it runs and hands the model your own rule text as the reason. Force-push denied, --force-with-lease allowed, rm -rf ./build warned, rm -rf / denied.

Repairs

Claude Code already re-reads your project-root CLAUDE.md after /compact — that part is native, free, and we will not sell it to you. What it does not re-inject is nested CLAUDE.md files and paths:-scoped rules. A PostCompact hook covers that residue and records that it did.

Records

Every allow, warn and deny is appended to .enforcee/ledger.jsonl on your disk. It is yours; nothing is sent anywhere.

The command line

Zero network calls. Not one, not even the licence check. About 80% of a real ruleset is decided by code, so the diagnostic half genuinely does not need a model, a key or an account — and it never will.

npx enforcee audit CLAUDE.md answer.mdfree, no account

Per-rule verdicts with evidence. Exits non-zero on a violation, so it drops straight into CI.

npx enforcee health CLAUDE.mdfree, no account

Critiques the ruleset itself: duplicates, contradictions, rules too vague to ever check.

npx enforcee learn conversation.txtfree, no account

Proposes rules from things you already said. Nothing is switched on for you.

npx enforcee session <session>.jsonlfree, no account

What the model could actually see: skills offered vs used, MCP servers that never connected.

npx enforcee guard CLAUDE.mdlicensed

Compiles and recompiles the policy the guard enforces.

npx enforcee licencefree, no account

Shows which licence this machine is using, and when it expires.

How the licence works, plainly

The auditing commands are free forever and need no licence — that is not a trial, it is the deal. The guard is what we charge for, and it is checked with a signature your machine verifies on its own.

Use it as a CI gate

audit exits non-zero when any rule is violated, so the same check that runs on your laptop can fail a pull request.

- name: Enforcee
  run: npx enforcee audit CLAUDE.md build/answer.md

What it will not do

Build a policy from your rulesPricing