Skip to content

[ Operations / troubleshooting ]

Troubleshooting ​

This page maps devkit symptoms to safe fixes. Start with devkit status and devkit doctor.

bash
bash
devkit status     # version, source/channel, sync age, missing tools
devkit doctor     # deep check: symlinks, personal config, tools
devkit version    # installed versions

Symptom, cause and fix ​

SymptomCauseFixVerify
Signature or checksum errorArtifact incomplete, changed, or from the wrong sourceCheck devkit config show, then devkit sync. If it still stops, do not bypass it.devkit status shows the expected version
Skills or agents missingSync incompletedevkit sync, then devkit doctor.devkit list skills shows entries
Personal skill seems overwrittenName collision; the guard kept your file and left the shared one inactiveRename one of the two.devkit doctor reports no collision
Config is staleBackground fetch not applied yetdevkit sync.Sync age is fresh in devkit status
Tool missing, such as gitleaksNot installeddevkit tools --outdated, then devkit tools --upgrade.No missing tools in devkit status
Tool has the wrong versionAn older binary comes first in PATHCompare which -a <tool>, remove the foreign npm/nvm/volta/brew copy, then devkit sync.<tool> --version matches the pin
Regression after updateNew version is unwanteddevkit rollback or devkit rollback <version>.devkit status shows the target
Hooks do not fireHooks not wireddevkit sync; devkit hook-install wires only the hooks.Expected hook output appears
Need to switch the setup offDebugging, foreign machine or foreign repositorydevkit off removes links and hooks but keeps version and config; devkit on restores them.devkit status says off
Doctor says a default MCP server is disabled/mcp wrote it to disabledMcpServers; claude mcp remove does not clear thatRe-enable it in /mcp.devkit doctor no longer names it
devkit init reports foreign-context7Hand-maintained Context7 entry in the project .mcp.jsonAt a terminal devkit init asks whether to replace it (default yes); otherwise devkit init --replace-context7 removes only that block, the global server stays.The next run reports no Context7 work
Startup warns about Write(...) permissionsLegacy Write(path) ruledevkit init removes it where Edit(path) exists.No warning at startup
Neither od nor devkit respondsThe command became devkit in v0.12.0 and the PATH links reconcile at the next session start~/.onedot-devkit/current/bin/devkit bin-reconcile. Do not re-run the installer; it fetches and syncs immediately.which -a devkit shows one entry
git push stops with sandbox proxy refused SSH auth to github.comThe Claude Code sandbox proxy passes only HTTP(S), never SSHOnce per machine: git config --global url."https://github.com/".insteadOf "git@github.com:", then gh auth setup-git.git push --dry-run passes
Auto mode keeps prompting for a read-only commandThe command is not on the default allowlistAfter real usage, /fewer-permission-prompts writes a prioritized allowlist from the project transcripts into .claude/settings.json.The command runs without a prompt

The macOS menu bar switch has its own page with its symptom table.

Set up or update a project ​

devkit init sets up a project checkout for devkit — new, or from an older devkit version — one Git checkout per call. Git is required because Git is the undo.

bash
bash
devkit init --dry-run   # shows the plan
devkit init             # applies it
devkit init --dry-run   # verifies: "Nothing to do"

It strips dangling .hooks entries whose script is gone (PROJECT_HOOK_DANGLING/PROJECT_HOOK_STRIPPED), removes stale model pins — Opus and Sonnet ID pins alike, no longer normalized to an alias — and Write(X) permission rules, ignores agent-state caches, moves a legacy spec tree, rebuilds .agents/context/ and the managed block in AGENTS.md, and turns CLAUDE.md into the one-line @AGENTS.md import. A local skill file naming a script under .claude/scripts/ that no longer exists is reported as PROJECT_LOCAL_SKILL_DANGLING.

Projects set up by the old npx-ai-setup are no longer cleaned up: remove its leftovers, such as .ai-setup.json and the copied template files under .claude/ and .codex/, by hand.

Closing stateMeaning
cleanNothing to do; the project is set up.
pendingThe dry-run found changes; run devkit init without --dry-run.
appliedChanges were written.
attentionNothing was written; a phase stopped short of your decision.

Full reset ​

bash
bash
devkit unlink  # remove runtime and state; keep MCP client entries
curl -fsSL https://devkit.one-dot.io/install.sh | sh

The hosted installer performs fresh onboarding and repairs incompatible runtime contracts.

Internal docs — onedot-devkit · devkit

devkitdevkit syncdevkit statusdevkit doctordevkit helpInternal docs · ONEDOT digital crew