Skip to content

Troubleshooting

Start here whenever gald3r isn't behaving the way you expect. Every command and output shape on this page was verified against a real checkout while writing it — including the warnings, not just the happy path — with placeholders only where a value (a version number, a percentage) would otherwise go stale the moment the next release ships.

Step 1: gald3r doctor

gald3r doctor

doctor checks your identity file, schema version, any installed IDE overlay's freshness, PATH resolution (a stale or shadowing gald3r copy earlier on PATH), platform-spec parity, wired hooks, git-hooks configuration, declared constraints, and the local task/bug database's consistency against the files on disk — all in one pass. warn/skip rows are informational, never a blocking failure by themselves; fail rows always name the exact fix to run. A few worth knowing:

Row What it means Fix
schema_version The binary's expected schema/rel version doesn't match this project's .identity gald3r schema-migrate to bring the project forward, or use a matching binary version
overlay_currency / overlay_version_stamp An installed platform overlay (.claude/, .cursor/) has drifted from what the current binary would generate, or was stamped by a different version gald3r platform install <platform> --force to resync
path_resolution More than one gald3r binary is reachable on PATH, and they disagree Remove or reorder the stale copy so the current one resolves first — the check names the exact path and remediation command
git_hooks core.hooksPath isn't pointed at this repo's .githooks/ git config core.hooksPath .githooks if you want local pre-commit checks enabled

world_tree connectivity and stored-session-token status aren't part of doctor's default pass — check them directly with gald3r workspace probe and gald3r workspace token-status. Neither being unset blocks anything outside team/cross-project features — gald3r login signs in when you need them.

Step 2: gald3r selftest

gald3r selftest
gald3r system test harness -- <project> (gald3r <version>)
Overall: N% functional (M/K passing)
  [PASS   ] Bug Tracking             100%
  [FAIL   ] PLATFORM_SPEC            0%
  [FAIL   ] Platform Parity          0%
  [SKIP   ] Hook Wiring              -
  [FAIL   ] Git Hooks                0%
  [SKIP   ] Constraints              -
Report: <project>\.gald3r\reports\system_test_<timestamp>.md

selftest is a percentage-of-installed-capability check, not a pass/fail gate — a lower number usually means no platform overlay is installed yet in this particular project (platform parity, hook wiring, and git hooks all depend on one), not that the CLI itself is broken. Read the written report file for exactly which sub-checks failed and why; install a platform overlay (gald3r platform install <name>) and re-run if those are the checks you care about.

Step 3: gald3r errors / gald3r trace

gald3r errors
No matching error/failure trace records.

(Real output — a clean checkout has none.) When something DID fail during an agent run, errors summarizes it from the trace logs; gald3r trace inspects the full trace log directly for a specific run.

Step 4: gald3r medic

gald3r medic --help
Diagnose and repair problems in your project's gald3r setup -- broken links, stale indexes,
drifted files -- fixing what's safe to fix automatically.

Available Commands:
  curate      Analyze feature/subsystem fragmentation (dry-run) or apply approved moves
  heal        Structural backfill for repos predating a framework feature (dry-run default)

medic diagnoses and repairs problems in your project's .gald3r/ structure itself — broken links, stale indexes, drifted files — fixing what's safe to fix automatically and reporting the rest. Both subcommands default to dry-run; nothing changes on disk until you pass the apply flag they document.

Common issues

Windows: gald3r returns instantly with no output at all (blank exit code)

If you hit this, you're almost certainly invoking gald3rw.exe directly (the GUI-attach binary) from a console-less host, or you have a stale single-binary install still on PATH. Update to the current release (gald3r install update, or re-run gald3r platform install if you're on an installed overlay) and invoke gald3r, not gald3rw, from a shell.

The two-exe contract: the Windows release ships TWO executables on PATH:

Binary PE subsystem Use it for
gald3r.exe Console (3) Terminals, scripts, scheduled tasks, AI-agent shells — anywhere you type gald3r yourself or a script invokes it directly. Always waits, always prints, always returns a real exit code — including from a console-less PowerShell host.
gald3rw.exe GUI (2), attach Throne, IDE hooks, the Valkyrie connector, and any other spawn from a process that must never flash a console window. Interactive terminal usage still prints normally; a console-less parent gets zero console flash and no output — by design, since nothing is watching for it there.

If you are deliberately invoking gald3rw.exe yourself (uncommon — it exists for programmatic/GUI-parented spawns, not interactive use) and want its output anyway, any of these forms works:

cmd /c "gald3rw --version"          # cmd allocates a console; output flows normally
Start-Process gald3rw -ArgumentList "--version" -NoNewWindow -Wait `
  -RedirectStandardOutput out.txt   # explicit handles bypass console attachment

Normal interactive terminals (Windows Terminal, VS Code/Cursor terminal panels, cmd.exe, Git Bash) and CI runners are unaffected either way.

"gald3r: command not found" / binary not on PATH

You installed the signed release but its install directory isn't on PATH, or you edited PATH in a terminal that was already open. See install.md — and fully restart your terminal/IDE after any PATH edit. If you built from source, see Install → From source for the equivalent PATH-registration step.

Installed platform overlay (.claude/, .cursor/) looks stale or hooks aren't firing

gald3r doctor
[warn] overlay_currency  claude: stale -- marker binary_version=5.0.0-beta.21 vs running
       5.0.0-beta.28; overlay_content_hash differs from the embedded neutral_source's
       current hash -- run `gald3r platform install claude --force` to refresh

(Real output shape, trimmed.) This is the platform-overlay drift check — the files actually on disk in .claude//.cursor/ no longer match what gald3r platform install would generate today (you hand-edited an installed file, or you upgraded the gald3r binary since you last installed the overlay). Fix:

gald3r platform install claude --into . --force

--force overwrites the drifted files with a fresh render — including a fresh, non-destructive .claude/settings.json merge (see install.md), so your own mcpServers/permissions/other top-level keys survive even across a forced resync.

gald3r status says "No .gald3r/gald3r.db found yet"

Expected on a fresh checkout, or after cloning a repo where the DB (gitignored by design — it's a regeneratable cache, not source of truth for the files) wasn't carried over:

gald3r db backfill

rebuilds it from the .gald3r/tasks/ and .gald3r/bugs/ files. See task-bug-workflow.md.

A task/bug file won't pass gald3r validate

gald3r validate --fix

normalizes whatever's safely auto-fixable (missing-but-inferable frontmatter fields, open-family files still sitting in a retired tasks/<old-status>/ or bugs/<old-status>/ subfolder). Anything it can't safely fix on its own, it reports instead of guessing. Active records belong at the tasks/ / bugs/ root; only completed//failed//cancelled/ (tasks) and done//cancelled/ (bugs) remain as terminal folders.

An autopilot/swarm run looks stuck

gald3r go-status

Read-only check on whether a running autopilot loop is ALIVE, IDLE-WAIT, STALLED, or STOPPED — without interrupting it. See autopilot.md for the rest of the run-management verbs (autopilot stop, worktree steer/queue).

gald3r login fails or times out

gald3r login

gald3r login with no arguments starts an interactive device-code sign-in: it requests a code from world_tree, prints a verification URL plus a short code for you to enter in any browser, polls until you approve, and stores the resulting session token — no raw token handling needed. If the sign-in service is temporarily unreachable, login fails loudly with the underlying error rather than hanging silently; retry, or use a pre-issued Bearer token instead if you have one:

gald3r login --token <TOKEN>                              # one-off
gald3r login --token <TOKEN> --base-url https://api.gald3r.ai   # explicit API base (default shown)

$GALD3R_WORLD_TREE_TOKEN is the equivalent env-var form, useful in CI or so you don't have to pass --token by hand every time. gald3r logout clears whatever session is currently stored (gald3r logout: no stored session to clear if there wasn't one — also not an error). None of this is required for local, single-project use — gald3r workspace token-status reports whether a session is stored, and a missing one only matters once you're using world_tree-backed features (valk, cross-project workspace sync, version-check's online path). See coordination.md for what those features actually unlock.

Cross-project coordination looks out of sync

gald3r workspace probe
gald3r workspace outbox pull

See coordination.md for the full WPAC/Valkyrie model — most drift is resolved by outbox pull reconciling the local mirror against the online registry.

Where next

gald3r <verb> --help (and gald3r <verb> <subverb> --help) is always more authoritative than this page for any single verb's current flags — if this page and --help ever disagree, trust --help.