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.
-
Restore
ANTHROPIC_BASE_URLOpen
.claude/settings.jsonin the project and remove the key fromenv. 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.
-
Remove the hooks
In the same file, delete the Iris entries from
hooks.PreToolUseandhooks.PostToolUse. They are the ones whose command containsiris.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.
-
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.
-
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.
-
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.jsonYou can also drop the four
.gitignorelinesinitadded, if you do not want them left behind. -
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 -
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 --forceIf 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.
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.