Reference

Uninstall

Remove every change Iris made, in order.

Iris makes a small, known set of changes. This page undoes all of them. Steps 1 and 2 are the ones that matter — after those, Claude Code is back to talking to Anthropic directly.

  1. Restore ANTHROPIC_BASE_URL

    Open .claude/settings.json in the project and remove the key from env. If you had a custom upstream before installing Iris, put that value back instead.

    {
      "env": {
        "ANTHROPIC_BASE_URL": "http://127.0.0.1:8787",  ← remove
        "IRIS_HOME": "/Users/you/.iris",                ← remove
        "IRIS_ENVELOPE_PATH": "…/authority.json"        ← remove
      }
    }

    This is the step that matters most: while the variable points at localhost and Iris is not running, Claude Code cannot reach the API.

  2. Remove the hooks

    In the same file, delete the Iris entries from hooks.PreToolUse and hooks.PostToolUse. They are the ones whose command contains iris.mjs hook. Leave any other hooks alone.

    {
      "hooks": {
        "PreToolUse": [
          { "matcher": "*", "hooks": [
            { "type": "command",
              "command": "node \"…/bin/iris.mjs\" hook" }   ← remove
          ] }
        ]
      }
    }

    With the hooks gone, Guard no longer evaluates anything and tool calls run as Claude Code would normally run them.

  3. Restore any tools you disabled

    Optimize wrote bare tool names into permissions.deny. Those entries survive uninstalling Iris and will keep tools out of context, which is confusing later. Remove the ones you no longer want:

    {
      "permissions": {
        "deny": ["NotebookEdit", "mcp__canva__export_design"]
      }
    }

    Keep any deny entries you added yourself for other reasons — Iris never touched those.

  4. Restart Claude Code

    Settings are read at session start. Quit fully and start again; Claude Code now talks to Anthropic directly with its full tool set.

  5. Delete the captured data

    Per project, inside the repo:

    rm -rf .claude/proxy-logs
    rm -f  .claude/history-index.json .claude/action-log.json .claude/proxy-run.log
    rm -f  .claude/iris-project.json

    You can also drop the four .gitignore lines init added, if you do not want them left behind.

  6. Delete the Iris home directory

    This holds every project's envelope, decisions and exports. Removing it discards your Guard policies, so skip this step if you might come back.

    rm -rf ~/.iris
  7. Remove the package

    If you only ever ran it with npx, there is nothing installed — clear the cached copy if you like:

    npm cache clean --force

    If you installed it globally:

    npm uninstall -g @zero-drift/iris

Verifying it is gone

# should print nothing
grep -n "iris" .claude/settings.json

# should fail to connect
curl -s -o /dev/null -w "%{http_code}\n" http://127.0.0.1:8787/__health

Then send one message in Claude Code. If it answers, you are back to a stock setup.

If something went wrong on the way out

The most common leftover is a tool still in permissions.deny, which makes Claude quietly unable to do something. Restoring a disabled tool covers it.