Troubleshooting¶
Fix a broken AdaMAST setup: run the health commands below first, then jump to the symptom that matches what you see.
🩺 First aid¶
-
Run the two health commands:
adamast doctor --config adamast.json adamast status --config adamast.json -
For a zero-config user-level installation, omit
--config:adamast doctor --codex adamast doctor --claude-code -
Use harness-specific checks when relevant:
adamast doctor --config adamast.json --claude-code adamast doctor --config adamast.json --codex
🧰 Install and environment¶
🪟 Commands are installed but PowerShell cannot run them¶
On Windows, Python's user-level Scripts directory may not be on PATH.
Run the module entry point directly until that directory is added:
python -m adamast doctor --codex
python -m adamast codex install --user-level
An npm Codex installation may also resolve bare codex to codex.ps1, which
PowerShell can block under a restrictive execution policy. Use the equivalent
command shim without changing the machine policy:
codex.cmd --version
codex.cmd
🔑 adamast_model cannot be called¶
Install the provider extra you need and make sure credentials are in the environment.
Anthropic:
python -m pip install "adamast[anthropic]"
Bedrock:
python -m pip install "adamast[bedrock]"
export AWS_BEARER_TOKEN_BEDROCK="..."
export AWS_REGION="us-east-1"
Warning
Do not print or commit credentials.
🪝 Hooks and checkpoints¶
🪝 Hooks installed but not firing¶
Check, in order:
- the hook config was installed into the project you are actually running;
- the harness trusts/enables project-local hooks;
adamast.jsonpoints to a valid trace output;- custom hook matchers use the host's actual event/tool names.
For broad tool matchers such as Bash, prefer adding a command_pattern so
a custom hook fires only for the intended recurring command.
For Codex, open /hooks and trust the AdaMAST hooks. After installing or
updating hooks, fully quit and reopen Codex Desktop: a new conversation
inside a Desktop process that started before the hook files were written
does not reliably reload them.
For Claude Code, list installed AdaMAST custom hooks:
adamast claude list-hooks --project-dir .
🚪 A gate did not fire¶
Blocking checkpoints fail open by design: if the hook process crashes or is killed at the harness's per-hook timeout, the agent continues and the checkpoint is silently skipped; an AdaMAST bug must never leave your session unable to finish.
To confirm the checkpoint actually happened, check:
[adamast]stderr lines (internal errors use theAdaMAST Claude Code hook error:prefix instead);- the per-checkpoint records in
<trace_output>/.adamast-runtime-evidence.json(Claude Code'sdecisions.logholds only custom-hook retry-guard releases; Codex writescodex-decisions.log); adamast statusfor the total recorded checkpoints.
🤫 Codex does not show AdaMAST checkpoints in chat¶
That is intentional: routine hook polls are silent (Codex may show at most a
short transient status such as Polling AdaMAST or Saving AdaMAST trace),
checkpoint fields go to the localhost monitor instead of chat, and learning
notices wait for the next SessionStart or UserPromptSubmit; see
What appears in chat. Null PostToolUse
outputs in codex-decisions.log are normal successful polls.
If a real tool failure is followed immediately by another tool call and no
new monitor entry appears, the installed managed skill may be stale. Upgrade,
reinstall, and review /hooks if Codex asks you to trust the definition
again.
🔂 Final gate retries unexpectedly¶
The final gate checks the shape of the reflection and decision. It can
verify that evidence was cited or that none apply was justified; it cannot
guarantee the reasoning is insightful.
If the agent keeps failing the final gate, inspect the generated trace and the gate prompt assets listed in CUSTOMIZATION.md.
🧭 Taxonomy selection and routing¶
🔁 The taxonomy browser reopens after resuming Claude Code¶
Current releases bind each Claude session ID to its first resolved AdaMAST
program. This prevents Claude's resumed or changed cwd from looking like a
new conversation. Upgrade and reinstall the user-level hooks:
python -m pip install --upgrade adamast
adamast claude install --user-level
adamast doctor --claude-code
The first hook after upgrading also migrates any existing selected or
disabled session state into the binding. It should not ask for the taxonomy
again. An exact legacy inline reply such as MAST is also recovered from the
saved Claude transcript before a pending session can launch the browser.
📨 Codex or Claude Code makes me submit the original task again after browser selection¶
Upgrade AdaMAST and rerun the matching user-level installer:
adamast codex install --user-level
adamast claude install --user-level
Both browser selectors now keep the first UserPromptSubmit hook open and
release that same prompt as soon as the browser writes its choice. Older
Codex hooks ended the turn immediately, while older Claude Code hooks
returned decision: "block"; both behaviors forced another message. The
installers give the prompt hook enough time for the browser choice while
keeping other built-in hook timeouts short.
👻 A taxonomy browser opens beside an unrelated Codex task¶
If the browser page names memories as the project, it came from a Codex
host-maintenance conversation rather than the visible project. Current
releases bypass ~/.codex/memories before AdaMAST routing. They also recover
an exact legacy inline reply such as MAST from a pending task's transcript
before opening a browser.
🙈 Taxonomy does not appear in the picker¶
MAST is built in and intentionally not a store record, so it does not appear
in list_all. It does appear as an explicit built-in option in the Codex and
Claude Code selectors.
Only stored generated, refined, imported, or registered taxonomies are
returned by list_all, and they appear only after they are stored as JSON
records under the configured store directory.
🏷️ The conversation still says MAST after learning finished¶
MAST may remain in persisted selection state as the conversation's lineage
seed. Once generation or refinement activates a successor, host context
should instead name the active taxonomy's display name and immutable ID and
direct the agent to its codes. Run adamast status to compare the active
taxonomy with the generation and refinement states. If status shows a
learned taxonomy but the conversation still calls MAST pinned, upgrade and
reinstall the host hooks.
🔀 A Claude Code picker shows a Codex taxonomy, or the reverse¶
Upgrade and reinstall both host integrations. Current releases namespace automatic project programs by host and check host ownership again when a program, taxonomy, or native learning job is claimed:
python -m pip install --upgrade adamast
adamast codex install --user-level
adamast claude install --user-level
Legacy records with contradictory provenance are preserved for audit but are classified as mixed and offered to neither host. The next conversation routes to a clean host-owned program and may ask for a taxonomy choice again. Imported taxonomies without interactive-host provenance remain available to both hosts.
🧠 Learning¶
🚀 Native taxonomy learning cannot launch¶
The conversation hooks can run even when a taxonomy worker cannot be dispatched. Check the host-specific doctor output:
adamast doctor --codex
adamast doctor --claude-code
For Codex, the native taxonomy job is claimed on UserPromptSubmit or a
supported SessionStart boundary, then launched by the active agent as a
subagent. The default SessionStart matcher includes startup, resume, and
context compaction. This matters for older or already-running desktop tasks
whose host process does not emit UserPromptSubmit: polling still queues the
job, and the next resume or compaction can deliver it safely. Reinstall the
Codex hooks after upgrading so the compact matcher is present. A queued
job can remain safely dormant between tasks; no standalone Codex CLI is
required.
If job.json reports support_queued, candidate generation already
succeeded. AdaMAST is waiting for the independent evidence-support subagent,
not generating the same candidate again. The manifest mirrors this
intermediate state and the originating conversation receives a one-time
notice. SubagentStop deliberately does not claim this phase; the next
prompt, resume, or context compaction does.
For Claude Code, inspect the next SessionStart or UserPromptSubmit
hook context for AdaMAST native taxonomy learning is ready. The active
Claude agent must launch exactly one native Agent subtask for the requested
phase and return its receipt through SubagentStop. A separate
support-review phase follows a valid replacement proposal. A standalone
claude -p login and claude_code.claude_cli_path are not used by the
native path.
Note
No external provider API key is needed for codex_subagent or
claude_subagent; each uses its active host session.
📦 Dashboard and storage¶
📊 Dashboard does not open¶
Try launching it manually:
adamast dashboard --trace-output ./adamast-program --store-dir ~/.adamast/taxonomies
If the port is busy, stop the old dashboard process or configure a different port through the integration that launches it.
📦 Trace folders are growing¶
AdaMAST keeps traces by default so future generation and refinement have evidence. For long-running programs, keep trace roots outside the repository and archive old folders periodically.
If another system needs the evidence, configure evidence_export so AdaMAST
writes a session-end JSON snapshot to a separate file or directory sink.
This does not prune or move the original trace folder.
Continue with CONFIGURATION.md for every runtime option, or COMPATIBILITY.md for supported hosts and current limits.