Skip to content

What changes on your machine

This page lists every file, hook and setting a starter install writes on Linux or macOS: where each one goes, who owns it, and what uninstall does with it. The rows come from scripts/install/uninstall-manifest.tsv, the list the uninstaller itself reads, and a test fails when that list gains a row this page does not show.

Knowing the way back is part of deciding to try: Undo the install.

How to read the columns:

  • Where: project is your project folder; user is your home folder, so it applies to every project on this machine.
  • Owner: himmel is himmel’s own code and wiring; you is your data or your own settings; another tool is what another program wrote.
  • Uninstall: what himmelctl uninstall does with it. --purge-state is the flag that also removes your data (detail). Each cell is what a run that finishes does. When a step cannot finish, the item stays and the run says so: for example a bridge unit with no systemctl to disable it, a file you changed since the install, or a crontab the run cannot read.
  • Row: the manifest row, so you can find it in the uninstaller’s own preview.

Paths are the defaults. Each row of the manifest also names the setting that moves it, for tests and non-default installs.

Every starter install

WhatPathWhereOwnerUninstallRow
Three git hooks: pre-commit, commit-msg and pre-push.git/hooks/projecthimmelRemovedgit-hooks
Any hook of yours the install displaced, saved as <hook>.himmel-backup.git/hooks/projectyouRestored to <hook> when that name is free, otherwise kept beside the current hook; never deletedgit-hook-backups
himmel’s hooks, status line and env keys.claude/settings.jsonprojecthimmelRemoved; keys himmel did not add stayproject-settings
Helper scripts copied into the project (project scope)scripts/projecthimmelKept, except the copies the install record lists, which are removed; drop the rest with gitadopter-scripts
The Claude Code plugins of your plugin setrecorded in .claude/settings.json, or in ~/.claude/settings.json at user scopeproject or userhimmelRemoved, the ones the install record listsplugins
The marketplaces those plugins come from~/.claude/plugins/userhimmelRemoved once no installed plugin needs themmarketplaces
himmel’s hooks, status line and env keys (user scope)~/.claude/settings.jsonuserhimmelRemoved; a status line or HANDOVER_DIR the install record does not list is kept, with the command to remove it by handuser-settings
A working-principles block appended to Claude Code’s user rules (user scope)~/.claude/CLAUDE.mduserhimmelStripped; the rest of the file is untouched and a copy as found is kept beside ituser-claude-md
The same block in Codex’s user rules (user scope)~/.codex/AGENTS.mduserhimmelStripped the same wayuser-agents-md
The status-line config~/.claude/claude-hud.jsonuserhimmelRemoved while it is still himmel’shud-config
A trust entry for the project, so Claude Code does not ask again~/.claude.jsonuserhimmelRemoved while it is still himmel’s own; an entry you had before is keptworkspace-trust
The installer’s cache: your install answers, update-check stamps and launch records~/.claude/himmel/userhimmelRemovedhimmelctl-cache
The install record: every write, and a backup of each file it replaced~/.himmel/provenance.jsonl, ~/.himmel/provenance-backups/useryouKept; --purge-state removes themprovenance-ledger
A copy of the uninstaller, so undo still works after you delete the download~/.himmel/uninstall/userhimmelKept; --purge-state removes it, laststandalone-uninstaller

The install also writes a himmelctl launcher and a himmel alias to ~/.local/bin. Neither is a manifest row. After a successful teardown, himmelctl uninstall removes the himmelctl launcher if it carries himmel’s marker, and never touches one it did not write. It leaves the himmel alias in place: delete ~/.local/bin/himmel yourself.

Only if bun is installed

WhatPathWhereOwnerUninstallRow
The qmd search tool and an index of your himmel download~/.himmel/qmd-forkuserhimmelKept; --purge-state removes what this install createdqmd-fork

qmd’s search models (about 2 GB) live in qmd’s own cache and are listed under Never touched.

When the qmd plugin’s launcher in ~/.claude/plugins/cache/qmd/qmd/<version>/bin/qmd is broken, setup patches it in place and keeps the original beside it as bin/qmd.orig. Uninstall keeps the patch: undoing it would bring the broken launcher back.

Only when you turn it on

A starter install leaves these off. Each appears once you set up the Telegram bridge, arm a scheduled job, declare a personal or medical vault in setup, or let setup save your commit rules and other answers.

WhatPathWhereOwnerUninstallRow
The Telegram bridge process—userhimmelRemoved: stopped, not deletedbridge-process
The Telegram bridge’s systemd user unit (Linux)~/.config/systemd/user/telegram-bridge.serviceuserhimmelRemoved: disabled, then deletedbridge-unit
Your Telegram pairing: the bot token and the access list~/.claude/channels/telegram/useryouKept; --purge-state removes it, never while the bridge is runningtelegram-channel
The bridge’s sessions, inbox and outbox~/.claude/handover/bridge/useryouKept; --purge-state removes it, never while the bridge is runningtelegram-bridge
HIMMEL-Resume-* jobs that resume a session lateryour cron and at queueuserhimmelRemovedscheduled-jobs
The scheduled jobs you armedyour crontabuserhimmelRemoved, by the exact names the install record holdscadence-jobs
The pipeline job’s runner scripts~/.claude/pipeline-cadence/userhimmelRemovedcadence-pipeline-dir
The qmd refresh job’s runner scripts~/.claude/qmd-cadence/userhimmelRemovedcadence-qmd-dir
The graph-map job’s runner scripts~/.claude/graphmap-cadence/userhimmelRemovedcadence-graphmap-dir
The list of jobs a health check expects to see run~/.himmel/observability.jsonuserhimmelRemovedobservability-registry
The personal or medical vault you declare, so local guards keep it away from cloud backends~/.config/claude-glm/phi-rootsuserhimmelNot removed yet: uninstall leaves these lines in placephi-roots
Your behaviour settings, such as the commit rules setup writes when you say yes; on a luna install it is a link into the vault~/.himmel/himmel.confuseryouKept; --purge-state removes it, and a link loses only the link, never its vault targethimmel-conf
Your per-machine overrides of those settings~/.himmel/himmel.conf.localuseryouKept; --purge-state removes ithimmel-conf-local
The answers setup saves, such as the vault path and VM mode, and the shared gate policy~/.himmel/config.jsonuseryouKept; --purge-state removes it, and a gate whose policy is gone then refuseshimmel-config-json

If you also say yes to the .salus marker and the vault folder already exists, setup creates an empty .salus file in it. If the folder does not exist yet, setup still records the vault and tells you to create the marker yourself once the folder exists. Uninstall leaves the marker there.

Never touched

WhatPathWhereOwnerUninstallRow
The himmel download, its .env and its worktreeswherever you cloned it, for example ~/himmeluseryouNever touched: delete it yourself, after the uninstallhimmel-clone
Every settings.json key himmel did not add: your MCP servers, your own hooks~/.claude/settings.jsonuseryouNever touchedforeign-settings
Your handover notes and their registry~/.claude/handover/registry.json and your handover foldersuseryouNever touchedhandover-registry
Caches other tools wrote while himmel ran: npm, node-gyp, bun, Claude Code’s plugin cache, qmd’s models~/.npm/_cacache, ~/.cache/node-gyp, ~/.bun/install/cache, ~/.claude/plugins/cacheuseranother toolNever touched: clear them with each toolthird-party-caches

Where to go next

  • See the same list for your own machine, with real paths, before you change anything: node ~/himmel/scripts/himmelctl/bin.js uninstall --dry-run (Undo the install).
  • Keep himmel but change what it does: install profiles and settings.