Troubleshooting (operator)

August 20, 2026 · View on GitHub

Executive overview

  • For: anyone hitting a snag installing or running wgm.
  • First move: every wgm gate prints a Gate check: block naming the failed item. Read that before anything else — it usually names the fix.
  • How this page is organized: by stage — Install · Companions · Loop · Validation · Artifacts · Contributing. Each entry is symptom, cause, resolution.
  • Most common three: the skill is not listed (wrong directory name, or the session needs a restart); build refuses to start (no IMPLEMENTATION_PLAN.md yet); the loop never stops (pass a max, or drop a STOP sentinel).
  • Next: Installation · Run the loop · Reference.

Before you troubleshoot

Three checks resolve most reports:

  1. Read the gate output. wgm prints Gate check: with a PASS or FAIL per item at every phase boundary. The failing item names the problem.
  2. Restart the agent session. Skills are scanned at session start, so a freshly installed skill is invisible to an already-running session.
  3. Confirm the directory name. The skill folder must be named exactly wgm, matching the name: field in its SKILL.md frontmatter. The same rule applies to teach-me and quiz-me.

Install

The agent does not list wgm

SymptomThe install reports success, but the client does not offer /wgm.
CauseThe folder is not where the client scans, the directory name does not match the skill name, or the session has not re-scanned.
ResolutionConfirm the path against the table in Installation. Ensure the directory is named exactly wgm. Restart the agent session. For project scope, start the agent from that project's root.

The curl one-liner does nothing, or prints 404

SymptomThe piped installer exits silently or reports a 404.
CauseThe repository must be public for the unauthenticated one-liner to fetch. curl -f also exits silently on a 404, so a failed install can look like a no-op.
ResolutionInstall from a clone instead: git clone … && ./scripts/install.sh. To see the real status, re-run the raw URL without -f.

"Failed to fetch wgm (…)"

SymptomThe installer reports a fetch failure.
CauseWhen piped with no local checkout, the installers self-fetch. This message means both the tarball download and the git clone fallback failed.
ResolutionCheck connectivity, the --ref you passed, and WGM_REPO / WGM_REF. Or install from a clone. See Installers reference.

The Windows side did not get wgm after a WSL install

Symptomwgm works in WSL but a native-Windows agent cannot see it.
CauseThe mirror runs for user-scope installs only — not --project or --dir — and is skipped by --no-windows. It may also have failed to resolve your Windows home.
ResolutionRead the installer's note line. If it says it could not resolve your Windows home, pass --windows-home /mnt/c/Users/you. Confirm your Windows agent scans %USERPROFILE%\.agents\skills\wgm.

install.ps1 unexpectedly ran inside WSL

SymptomA PowerShell install produced a Linux-side install.
CauseOn Windows with a WSL distro present, a user-scope install.ps1 delegates to the bash installer in WSL on purpose, so both homes are covered.
ResolutionPass -NoWsl for a native-Windows install, or -WslDistro NAME to pick a distro.
SymptomA warning about junction creation during install.
CauseCreating a junction can require elevated privileges.
ResolutionNone needed — install.ps1 falls back to a copy automatically and warns. Pass -Method copy to skip the attempt entirely.

How do I update an existing install?

Re-run the same installer. wgm refreshes a directory it recognizes as its own in place, with no --force needed, and adds the Windows mirror if it was missing. From a clone, make update pulls and reinstalls in one step.

Companion skills

teach-me or quiz-me is missing

Symptom/wgm works but /teach-me or /quiz-me is not offered.
CauseThe install used --no-companions or -NoCompanions, or it ran from a source tree predating the companions, or the client has not re-scanned.
ResolutionRe-run the installer without the opt-out flag and restart the session. Confirm SKILLS_DIR/teach-me/SKILL.md and SKILLS_DIR/quiz-me/SKILL.md exist — they must be siblings of wgm, not nested inside it.

The installer says "companion not in this source, skipping"

SymptomThat line appears during install.
CauseThe source tree or tarball has no companions/ directory — an older release.
ResolutionInstall from a newer ref: --ref main, or --ref latest for the newest published release.

Running the loop

"No agent configured."

Symptomloop.sh or swarm.sh exits 2 immediately.
CauseNo agent command was supplied.
ResolutionSet WGM_AGENT, pass --agent "CMD", or append -- copilot -p --allow-all-tools. See Choosing the agent.

"Refusing to run 'build': no IMPLEMENTATION_PLAN.md found."

Symptombuild, review, or preflight exits 1 before doing anything.
CauseThose modes need a plan on disk; they are not allowed to invent one.
ResolutionRun a plan pass first: ./scripts/loop.sh plan --request "…", or /wgm plan.

The loop never stops

Symptombuild keeps iterating indefinitely.
Causebuild defaults to unlimited iterations.
ResolutionPass a max (build 20), cap it with --max-runtime-seconds or --idle-timeout, create a .wgm/STOP sentinel, or press Ctrl+C. In a healthy run the agent drops the sentinel itself when no must-have task remains.

Model escalation is not kicking in

SymptomA stall never escalates to the stronger model.
CauseEscalation engages only when both --frugal-agent and a main --agent are set.
ResolutionSet both, and check --escalate-after (default 2). See Stall recovery.

"Capability probe failed"

SymptomThe loop exits before iteration 1 with a message that the agent did not create the disposable marker.
CauseThe headless agent can read the workspace but cannot write to it, or the invocation used a constrained/no-tools mode.
ResolutionGrant the invocation write access or use a full-shell agent, then rerun. --dry-run does not test this; a real build or plan always probes before spending the first iteration.

"No progress: plan unchanged"

SymptomA build exits non-zero after successful agent invocations that leave IMPLEMENTATION_PLAN.md unchanged.
CauseExit status alone is not evidence of useful work; the agent may have produced prose without an artifact or stopped without recording progress.
ResolutionInspect the agent log and plan, fix the task or permission problem, then rerun. Increase --max-no-progress-iterations only when a plan-preserving iteration is intentional and documented.

"Agent timed out"

SymptomThe loop reports Agent timed out after Ns and records a failed iteration.
Cause--agent-timeout-seconds N reached its limit. On hosts without GNU timeout or gtimeout, the loop states that it is using the cooperative fallback instead of pretending to terminate the process.
ResolutionInspect the agent output, lower the task scope, or increase the explicit timeout. Use a host with GNU timeout/gtimeout when hard process-group termination is required.

A plan or extract phase exits without its artifact

SymptomA single phase exits non-zero with Phase artifact missing.
CauseThe agent process returned zero without creating the plan or genes artifact promised by the phase.
ResolutionInspect the agent's write/tool permissions and rerun with a full-shell invocation. Do not treat a prose handoff as a substitute for the named file.

"--commit requires a clean worktree" or "undeclared paths"

SymptomA commit-mode loop refuses to start or refuses to stage a path.
Cause--commit takes exclusive ownership and will not sweep pre-existing or undeclared edits into an iteration commit.
ResolutionMove human edits to another worktree or commit them before starting. The agent must declare each intentional repository-relative file in the iteration ownership manifest; never bypass the refusal with git add -A.

The build loop edits the wrong files, or drifts

SymptomChanges land outside the task's stated scope.
CauseThe task's spec or plan entry is too loose to steer on.
ResolutionAdd a sign rather than hand-holding each step: tighten the spec, add a note to AGENTS.md, or split the task smaller. wgm steers on patterns plus backpressure.

A swarm lane failed with "lane guard: expected worktree …"

SymptomA lane exits immediately with a guard message.
CauseThe lane was not in its assigned worktree and branch. The guard refuses to let it mutate the wrong tree.
ResolutionThis is working as intended. Check for a leftover worktree or branch from a prior run — make clean-worktrees clears both.

A swarm lane says ok but has zero commits

SymptomThe swarm summary marks a lane as failed even though the lane process exited zero.
Causeswarm.sh verifies the artifact after waiting; a task lane with no reachable commit is a silent no-op, not a success.
ResolutionRead .wgm/swarm-logs/*.log, confirm the agent invocation has tool/write permission, and rerun the lane. Do not merge or report a zero-commit lane as completed.

Validation

The satisfaction score never reaches the threshold

SymptomThe loop keeps iterating without converging.
CauseUsually an ambiguous scenario expectation, or a demo path that is not actually wired up.
ResolutionInspect the weakest scenario recorded in IMPLEMENTATION_PLAN.md. Sharpen the expectation, or split the task. For a rough prototype, lower --threshold. See Scenarios and scoring.

Container scenarios fail to start

SymptomScenario validation cannot reach the service.
CauseNo container engine, or a port or readiness problem.
ResolutionConfirm podman or docker is installed, or pass --container explicitly. Check the readiness wait and that the published port is free. See Containers.

A test passes alone but fails in the suite

SymptomAn isolated re-run is green; the full gate is red.
CauseThe difference between the two runs is the bug — commonly a teardown race where buffered output is discarded before a consumer reads it.
ResolutionDo not treat the isolated pass as the answer. Inspect lifecycle ordering, synchronize producer teardown to consumer acknowledgement, stress the exact test repeatedly, then rerun the complete gate. Only a green full suite clears it.

A gate reports missing artifacts that clearly exist

SymptomAn isolated staged build reports a missing artifact.
CauseA globally shared build-target override was inherited, so the build emitted outside the stage-local path the verifier checks. This is a harness misconfiguration, not a product defect.
ResolutionClear or scope ambient target overrides before the build, or set an explicit stage-local target directory. Record the clean rerun separately from product failures.

Artifacts

wgm wrote files under .wgm/ instead of the repository root

SymptomArtifacts appear in .wgm/ rather than where you expected.
CauseThe safety rule: when the root already has AGENTS.md, IMPLEMENTATION_PLAN.md, or specs/, wgm writes its own copies under .wgm/ so it never clobbers yours.
ResolutionWorking as intended. See Artifacts.

wgm asked about reporting lessons upstream

SymptomA consent question appears before anything else on a new project.
Cause.github/wgm-hive.yml does not exist yet. Its absence is what defines "a new project" for consent.
ResolutionAnswer once. The file is written either way and never asked about again. consent: false keeps every lesson local. See the consent file.

Contributing

make validate fails on a fresh clone

Symptommake validate is red before you changed anything.
CauseUsually a missing development dependency.
ResolutionCheck the contributor prerequisites in Requirements. shellcheck is needed for lint, jq for docs.

check-evals.sh exits 2

SymptomThe evals gate exits 2 rather than 0 or 1.
Causejq is not on PATH. Exit 2 means misconfigured, distinct from 1 for a real failure.
ResolutionInstall jq.
Symptomcheck-docs.sh flags a link you can follow in your editor.
CauseLinks are resolved relative to the file containing them. A path that works from the repository root often does not work from a nested page.
ResolutionCount the ../ hops from the linking file. From docs/reference/, the repository root is two levels up.

Still stuck?

  • Re-read the protocol in SKILL.md. Every gate prints a Gate check: block naming exactly which item failed.
  • Look up the exact flag in the reference.
  • Open an issue. If wgm behaved plausibly but wrongly, use the heuristic report template — that kind of report is how its heuristics improve.