Clean uninstall
senkani uninstall removes everything it registered. senkani wipe additionally removes the session DB.
Dry-run first
senkani uninstall
Without --yes, prints the deletion list without acting. Gives you a chance to confirm.
Commit
senkani uninstall --yes --keep-data
The scanner walks twelve categories in a fixed order. Always removed:
- MCP registration in
~/.claude/settings.json— the global Claude Code settings file. One scan step, one file. - Hook registrations in per-project
<project>/.claude/settings.jsonfiles (PreToolUse + PostToolUse). Senkani's workspace.json drives the project list; the legacy~/.claude/projects/tree is also scanned for back-compat. One scan step, N project files. - Hook binary at
~/.senkani/bin/senkani-hook. - Runtime directory
~/.senkani/(workspace, metrics, sockets, panes). - Launchd plist(s) in
~/Library/LaunchAgents/— onlycom.senkani.*.plistentries created bysenkani schedule. .senkani/directories in tracked projects (per-project symbol indexes).- WebKit content rule list(s) under
~/Library/WebKit/<bundle>/ContentRuleLists/— files prefixedContentRuleList-senkani, compiled by Senkani's subresource blocklist. - Model metadata cache at
~/Library/Caches/dev.senkani/(downloaded-model registry).
Removed unless --keep-data:
- Session database at
~/Library/Application Support/Senkani/(FCSIT history, agent stats, knowledge base). - App preferences at
~/Library/Preferences/dev.senkani.app.plistplus any ByHost variants (FCSIT toggles, milestone progress, first-use flags). cfprefsd's in-memory snapshot is evicted in the same step so the next launch reads from disk. - Cache directory at
~/Library/Caches/dev.senkani.app/— macOS auto-creates this for any process running under the SenkaniApp bundle ID. Distinct from the bundle-ID-onlydev.senkani/cat-9 entry above. Surfaced 2026-05-11 by the Step-9 broad sweep; honors--keep-dataper operator decision. - Saved application state at
~/Library/Saved Application State/dev.senkani.app.savedState/— macOS NSWindowRestoration writes window position, last-open documents, and per-window restore state here keyed by bundle ID. Surfaced 2026-05-14 by the onboarding-pass walk (Finding #B): the directory survivedsenkani uninstall --yesand the next install opened SenkaniApp's main window off-screen from the prior run's coordinates, breaking the clean-install premise of the walk. Honors--keep-data— window position is ergonomic state.
--keep-data keeps the session database, app preferences, bundle-ID cache directory, and saved application state in place. Drop the flag if you want everything gone — including the first-launch state, so the next launch behaves like a fresh install.
Verify the onboarding-milestone opt-out
Setting SENKANI_ONBOARDING_MILESTONES=off makes every read and write inside OnboardingMilestoneStore a no-op so a privacy-strict user can opt out without recompiling. To verify the gate is active and confirm nothing further is being written to ~/.senkani/onboarding/milestones.json, run the read-only inspection subcommand:
senkani onboarding milestones
The subcommand emits four blocks: the live SENKANI_ONBOARDING_MILESTONES: on|off status, the absolute path to milestones.json, the file's JSON contents pretty-printed (or (file does not exist yet)), and a derived summary.allComplete line. Reads deliberately bypass the env gate so =off still surfaces on-disk truth — the gate is opt-out-of-recording, not opt-out-of-observability. cat ~/.senkani/onboarding/milestones.json is the script-friendly raw fallback when the senkani binary isn't on PATH.
Full wipe
senkani wipe --yes
Deletes the session DB + socket-auth token. Doesn't uninstall. Use this when you want to reset your stats.
senkani export --output ~/senkani-archive.jsonl --redact.