Skip to content

Disabling and Uninstalling LumenFlow

LumenFlow is designed to be easy to remove. Adoption trust depends on a credible opt-out. Two first-class commands handle it:

  • pnpm lumenflow:disable / pnpm lumenflow:enable — reversible enforcement opt-out
  • pnpm lumenflow:uninstall — destructive eject with dry-run default

Use lumenflow:disable when you want to temporarily turn enforcement off without removing any files. Flags are flipped to false in workspace.yaml and Claude Code hooks are regenerated as no-ops. Prior enforcement state is saved to .lumenflow/state/enforcement-prior.json.

  1. Disable

    pnpm lumenflow:disable

    Scope to one client:

    pnpm lumenflow:disable --client claude-code
  2. Re-enable later

    pnpm lumenflow:enable

    Prior flag values are restored. If no prior state exists, all enforcement flags default to true (safe default).

lumenflow:disable is idempotent — running it twice produces no diff.

lumenflow:uninstall removes LumenFlow-generated files from your project. It defaults to dry-run — you must pass --confirm to actually delete.

pnpm lumenflow:uninstall

Prints the planned deletions without modifying disk. Run this first to inspect scope.

FlagEffect
--confirmActually delete (without this, dry-run).
--keep-historyPreserve docs/operations/tasks/wu/ and .lumenflow/stamps/.
--keep-configPreserve workspace.yaml and .lumenflow/constraints.md.
--client <name>Scope deletion to one client (e.g. claude-code, cursor, codex-cli).
--jsonEmit machine-readable JSON output.

LumenFlow classifies files into these categories, and uninstall acts accordingly:

CategoryExampleAction
hook.claude/hooks/enforce-worktree.shDelete
settings.claude/settings.json (hooks section)Surgical strip
vendor-rule.cursor/rules/lumenflow-recovery.mdDelete
ci.github/workflows/lumenflow-ci.ymlDelete
state.lumenflow/state/Delete
stamp.lumenflow/stamps/Delete (unless --keep-history)
configworkspace.yamlDelete (unless --keep-config)
docsdocs/operations/tasks/wu/Delete (unless --keep-history)

Uninstall does not touch node_modules or package.json dependencies. Remove the packages separately:

pnpm remove @lumenflow/cli
# or, if other @lumenflow/* packages are direct deps:
pnpm remove $(pnpm ls --depth=0 --json | jq -r '.[0].dependencies | keys[] | select(startswith("@lumenflow/"))')

Because all deletions happen in your working tree, git is the restore path:

git checkout -- <paths>      # restore files still in the last commit
git revert <uninstall-commit> # if you already committed the uninstall

If you ran uninstall in a throwaway branch, simply discard the branch.