agenticonsult logoagent i /consultDocs
Troubleshooting & FAQ

Troubleshooting

Symptoms, causes, and fixes — seeded from the Doctor checks.

Start with Doctor

Every troubleshooting session starts in the same place: Settings ▸ Doctor. It stays available whatever your account state — signed out, lapsed, or fully verified — because it is the surface that fixes exactly those problems.

Doctor runs the full health catalog against your install and shows one row per check, in these groups:

GroupCovers
ComponentsWhat Command Center installs for you — enable or skip any of it, any time
CoreBinaries (Node.js, npm, the agent CLI) · configuration files · folder trust · platform tree · doctrine · hooks
Runtimeuv · the managed Python · the per-service environments · the provisioner — install, update, and repair here
DaemonsThe app-managed background services and ArcadeDB
EnginesRemotion and Hyperframes — the opt-in video engines
Mediaffmpeg/ffprobe, the pinned Node for video, and the Whisper speech-to-text models
AccountSign-in and subscription state
Agent control planesWhat agents may currently do unattended

How to read the results

Three result states matter:

  • Pass — the check verified the real condition (a binary answered on PATH, a daemon answered its health endpoint, a file exists where expected).
  • Fail — a prerequisite is genuinely missing: a binary that is not on PATH, a missing environment file, a runtime environment that was never created or whose interpreter is broken, or a missing or partial platform tree. Nothing else in the catalog can fail.
  • Info — a deliberate design choice worth understanding: "not started yet" is never treated as broken. A daemon that is not running, a component you skipped, an engine you have not installed, an API key you have not set, a control plane you switched off, or a check that cannot run because the daemon it needs is offline all show as info rows with a precise cause and, where possible, a one-click fix. An install with several info rows can be perfectly healthy.

Most rows carry a fix action (Start, Provision, Repair, Generate, Trust, Fetch, Enable, Refresh). These delegate to the exact same operations the Dashboard's Platform Health card uses — there is no separate "Doctor-only" mutation path, so a fix applied here behaves identically to one applied there.

When the app itself will not start

The same checks exist as a zero-dependency terminal script that runs before anything is provisioned — no daemons, no Python packages required:

python scripts/doctor.py

Run it from your install root. It is the fallback diagnostic for the rare case where the desktop app cannot boot at all.

The clusters below map the Doctor catalog onto the problems buyers actually hit, in rough order of likelihood. The per-check reference is at Reference ▸ Doctor checks.


Runtime prerequisites — binaries and Python environments

Command Center rides a small set of external binaries, and runs its own Python side in per-service environments it installs itself. Doctor splits these: the Core group checks the binaries, and the Runtime group owns everything Python.

SymptomDoctor rowFix
Agent features do nothing; MCP servers never come upAgent CLI (claude) — fail, "not found on PATH"Install Claude Code from claude.ai/code and sign in with your own Claude account. The agent CLI is the one prerequisite Command Center cannot provision for you.
App UI or video engines will not build/installNode.js / npm — failInstall Node.js 22 or newer from nodejs.org; npm ships with it. If npm alone is missing, reinstall Node. For the video engines specifically, the Media group can install a pinned Node for you instead.
Nothing Python-backed can be set up at allBootstrap Python — fail, "no Python to bootstrap the provisioner"Install any Python 3.8 or newer. It is used only to launch the provisioner — Command Center installs its own Python 3.12 for the background services, so your system version does not need to match. Present is an info row, not a pass, for exactly that reason.
Daemons exit immediately; MCP servers report missing modulesOne or more venv rows, or Runtime provisioner — failPress Provision on the Runtime provisioner row (below).
A single service misbehaves while the rest are fineThat service's venv row — fail, "venv present · interpreter broken"Press Repair on that row — it recreates just that environment from scratch.

Use the Provision button

Doctor's Runtime group installs and repairs; it does not only report.

  • Provision on the Runtime provisioner row installs uv, a pinned Python, and every missing environment in one pass. Expect several minutes on first run — it downloads an interpreter.
  • Re-provision on the same row rebuilds against refreshed dependencies.
  • Provision / Repair on an individual environment row targets just that one.

The command-line equivalent still ships:

python scripts/provision_runtime.py

Run it from your install root. Reach for it when the app will not open — when it does open, the buttons do the same work and report progress.

Two info states worth knowing:

  • "cannot verify yet" on a binary row — the tool-detection command shipped in this build but needs one app restart to activate. Restart Command Center and re-run Doctor before concluding anything is missing.
  • "platform updated since last provision" on the Runtime provisioner row — an app update refreshed the platform tree, but Python environments are never touched automatically on update. Re-provision to pick up refreshed dependencies.

A component you skipped

Command Center asks during first-run setup which parts it should install for you, and everything is on unless you say otherwise. If a capability never appears and no row explains why, check Doctor's Components group first: a skipped component shows as an info row naming exactly what stops working, with an Enable button beside it.

SymptomDoctor rowFix
Nothing Python-backed will provision, and no error explains itManaged Python runtime — info, "skipped"Enable, then Provision from the Runtime group.
Cortex and the knowledge base have no graph to read or writeKnowledge graph — info, "skipped"Enable, then Provision on the ArcadeDB row.
Footage or video work reports no media toolingMedia tools (ffmpeg) — info, "skipped"Enable, or press Fetch now on the ffmpeg row — an explicit install always proceeds regardless of the flag.
The video engines cannot be installedVideo engine runtime (Node) — info, "skipped"Enable, then Install Node on the Media row.
Transcription is unavailable or silently falls backSpeech-to-text (Whisper) — info, "skipped"Enable, then install a model from Settings ▸ Speech-to-Text.

Skipping never deletes anything already installed — it only stops future automatic provisioning — and it is never a lock: pressing an install button elsewhere on the board proceeds anyway, because asking for the install is the act of enabling it.


API keys — presence and reachability

No API key is required to boot Command Center. Two optional Gemini slots unlock specific capabilities, and Doctor checks both presence and whether the running services can actually use them.

SymptomDoctor rowFix
Semantic memory search returns nothing; knowledge-base embeddings unavailableGemini key (KB · memory · embeddings) — info, "not set"Set GEMINI_API_KEY in Settings ▸ API Keys (free tier). Keyword memory search and graph queries keep working without it.
Key is set, but semantic search still failsSame row — info, "the running memory daemon has no key loaded"The service started before the key was saved. Restart Shared Memory from Dashboard ▸ Platform Health. (If an agent session is currently hosting that surface instead, restarting the session is the equivalent.)
Search stops working on a knowledge-base workspace that used to searchNo row — the search itself answers "Full-mode search needs a Gemini key"Full-depth workspaces need the key at query time, not only when they were built. Restore the key, or search the same corpus through its structure and entity layers, which need no key.
Covers and generated images failGemini image key (imagegen) — info, "not set"Set GEMINI_IMAGE_API_KEY in Settings ▸ API Keys. This slot is paid-tier and used only by image generation. The imagegen service itself still runs and reports itself unconfigured — a dark image feature is not a dead daemon.
Image key is set but generation errors outSame row — info, "a key is configured but the provider did not answer"Two different causes, in this order: the daemon started before the key was saved (restart it from Platform Health), or the key itself is rejected (check its value and billing state in your Google account). Doctor distinguishes them, so read the detail line before going to your billing page.

Two rules explain most key problems:

  1. Keys are read at process start. A key saved while a daemon is running is invisible to it until that daemon restarts. Doctor cross-checks the live daemon's own view and names this state explicitly.
  2. Key writes are restart-bound. Settings ▸ API Keys writes your local .env file (and creates it on first save — the ".env configured" row passes from then on). After changing keys, restart the affected daemon (Dashboard ▸ Platform Health).

Daemon health

The platform's substance runs in local background daemons, all bound to loopback (127.0.0.1) only. Doctor's Daemons group probes each one's health endpoint.

DaemonWhat stops working without it
ObserverNews and feed harvesting, source scheduling
RoutinesScheduled agent jobs, the video/products/footage job engine
Knowledge BaseIngest, graph sync, Cortex data
ImagegenImage generation
VoiceThe Voice assistant
EmailThe Email view — sending, listing, monitoring
MCP GatewayThe shared MCP endpoint
Shared MemoryCross-agent memory search and writes
ArcadeDBThe knowledge graph itself (see the next cluster)
SymptomCheckFix
A view sits empty or shows "offline"The matching daemon row — info, "not running"Click Start on the row, or use Dashboard ▸ Platform Health.
Everything daemon-backed is down after a rebootAutostart togglesAutostart is on by default, so the usual cause is that it was turned off for that service. Check Dashboard ▸ Platform Health, then Start the row.
Shared Memory shows "not running" while other daemons are fineShared Memory rowPress Start, exactly like the others. It is an app-managed service.
You stopped Shared Memory and it came backShared Memory row, detail ends "hosted by a Claude Code session"An agent session can host the same surface as a hot spare, and Command Center can only stop a host it owns. The row names which host is answering; close that session if you need the surface genuinely down.
A daemon-backed Doctor row says "daemon offline — cannot check"The daemon rows above itThis is by design: daemon-down is a first-class state, not an error. Start the daemon, then re-run Doctor for the dependent rows.

A daemon being down never crashes the shell — dependent views go quiet and recover as soon as the daemon is back. Restarting a daemon from Platform Health is also the standard step after configuration changes, and it never requires restarting the app. See Infrastructure ▸ Daemons for the full map.


Knowledge-graph backend (ArcadeDB)

The knowledge graph runs on ArcadeDB. The default mode is provisioned local: Command Center installs and manages its own no-Docker instance (a Java runtime plus a pinned package) inside your install. No container runtime is required.

SymptomDoctor row stateFix
Cortex is dark; ingest and graph queries fail on a fresh installArcadeDB — info, "not provisioned yet"Click Provision. This downloads and sets up the local instance — expect a few minutes. When it finishes, Doctor brings the database up and restarts the Knowledge Base daemon automatically.
Graph worked before, dark nowArcadeDB — info, "provisioned, not running"Click Start, or manage it from Settings ▸ Database.
Provisioning reports an errorRow detail names the failureRead arcadedb/local/_provision.log in your install root for the exact step that failed, fix the cause (usually disk space or a blocked download), and provision again.
Docker/remote mode shows "unreachable"ArcadeDB — info, docker/remote modeYou have pointed the graph at an external ArcadeDB server. Check that server, or switch back to provisioned-local in Settings ▸ Database.

The graph store is derived data — it is rebuilt from your files by root sync and re-ingest. A damaged graph is an inconvenience, never data loss; your documents are the source of truth. See Concepts ▸ Knowledge graph.


Sign-in and subscription

Command Center requires sign-in with an active Pro or Ultra subscription. Verification happens online, periodically, and the product is designed to degrade politely rather than punish you when it cannot reach the account service.

How long a machine works offline: up to 72 hours from its last successful verification. Verification renews automatically at the halfway point, so an install that loses contact keeps working somewhere between 36 and 72 hours depending on when it dropped. There is no additional grace period after that. App updates are governed separately and tolerate a staler record — a few extra days — so security patches keep arriving after feature access has paused.

While you are verified, Settings ▸ Account states this plainly: when the record was last confirmed, that it renews automatically, and how much longer the machine works without reaching the service.

When verification is not current, Doctor's Account row reads degraded (<reason>) — treated as unsubscribed, and the reason is what tells you what to do:

What you seeWhat it meansWhat to do
"not signed in"No account is connected on this install.Sign in from Settings ▸ Account (Doctor's Account row has a shortcut).
degraded (offline_too_long)The machine has been offline past its window. Nothing is wrong with your account.Reconnect, then click Refresh on the Account row.
degraded (revoked)This device was signed out — usually because you signed in on a third machine. Command Center allows two at a time, and a new sign-in evicts the least recently used device.Sign in again on this machine. That evicts whichever of the other two was used least recently.
degraded (expired)It has been a while since this device signed in.Sign in again.
degraded (invalid) · (unverifiable) · (no_record)The saved subscription record on this device is unusable or incomplete.Sign in again — signing in replaces the record.
degraded (account_unavailable)The account itself is no longer active.This one is terminal, so the row offers Open account rather than a Refresh that provably cannot work. Check billing, or contact support.
Signed in, verified, and everything paid-for is still lockedThe record is valid but grants nothing — the usual cause is a payment that did not go through.Fix billing, then click Refresh. This is a subscription state, not a broken install.

Nothing is deleted in any of these states. Your files, configuration, and local data are untouched, and everything unlocks again on the next successful verification.

If a refresh fails while you are demonstrably online, check that your subscription is active, then contact support with the exact Account row text.


Something refused

These are the cases where the product is working exactly as configured and still says no. None of them is a fault; all of them are hard to diagnose without knowing where the switch is.

SymptomCauseFix
Your own Send button stops working. Drafts still save, reading and searching are fine.The Email sending control plane is off. Your composer does not go through the agent tool surface, but it does go through the same mail client underneath, and the stop lives inside that client. While it is off, nothing leaves this machine by mail — agent or human. That is deliberate.Settings ▸ Terminals ▸ Agent control planes ▸ Email sending → on. Doctor's Agent control planes group shows the same state with a shortcut to the card.
An agent reports it cannot write to the knowledge graph, while Cortex edits work normallyThe Knowledge-graph writes plane is off. It gates the agent tool path; your own Cortex curation reaches the graph through a different service, so it is unaffected.Same card, Knowledge-graph writes → on.
Agent-driven terminals, fleets, or window control stop respondingThe Terminal control or Window & view control plane is off — or, for terminals, paused. A paused plane is enabled and refusing everything at once, which is why Doctor reports the two states separately.Same card for the switch; the terminal pause has its own control in the Terminals view, and Doctor's row links you there.
Agents can read the schedule but cannot change itThe Calendar control plane is off. Agent writes are refused; reads still answer, and dispatch is unaffected.Same card, Calendar control → on.
A tool call or a view answers "subscription required" although you are signed inA tier gate, not a fault. Most of the MCP fabric and several daemon routes refuse in whole or in part on a lapsed or unsubscribed install, and the refusal is a normal tool result naming the capability and your current tier — never a crash. Graph reads, the memory tools, and window control stay open; mail and knowledge-base routes do not.Check Doctor's Account row first — if it is degraded, the cluster above applies. If the account is fine, the feature is above your tier; see Tiers.

What each plane governs, why they fail open, and what is recorded is on Autonomy and controls.


Nothing is happening on a fresh install

A brand-new install is deliberately quiet. Nothing schedules itself, so an install that looks complete and does nothing is usually behaving correctly.

SymptomCauseFix
No articles, no briefings, no harvest — everything looks installedNo routine is scheduled on a fresh install. Scheduling is per-routine state on your machine, and it ships off.Open Routines and enable the ones you want, with the cadence you want. Expect roughly a minute of warm-up before the first run. See Routines.
Routines are enabled but nothing runsThe routines daemon is not running, so nothing can fire.Start it from Dashboard ▸ Platform Health or Doctor's Routines row.
A fleet worker ignores an instruction you sent itMessages to a running session are stored, not guaranteed to be delivered live. A recipient that is stopped, sitting at a permission prompt, or parked on a dialog receives it into its mailbox and drains it on its next turn.Nothing to fix — check the mailbox rather than the pane. The message lands when the worker next acts. See Missions and the fleet.
Harvested items disappear from the working set, and a folder inside documents/ reorganizes itselfRetention archives items after two weeks: files move to an archive folder and the index row survives, so nothing is forgotten and nothing is deleted. The first sweep over a backlog moves a lot at once, which reads as a disappearance.Restore from the archive, or widen the window at Observer ▸ Settings ▸ Retention. Automatic deletion of the archive ships disabled. See the intelligence desk.

Hooks, terminals, and folder trust

Two agent-harness conveniences ride hook scripts installed into your agent configuration — and uninstalled hooks fail silently, which makes them a classic "nothing errored, it just stopped happening" case.

SymptomDoctor rowFix
Agent terminal panes no longer resume their sessions after an app restartFleet wake & session-resume hooks — info, "not installed"Run python .claude/hooks/cc_install_hooks.py from your install root. It writes machine-correct paths; new terminal sessions pick the hooks up immediately.
Fleet workers idle indefinitely without being nudgedSame rowSame fix — the idle-nudge rides the same hooks.
A new agent session stops at a trust prompt every timeFolder trust (agent CLIs) — infoAgent CLIs trust folders individually. Use the row's Trust this folder action once for your install root; it trusts every installed engine in one go, so a second engine is never the one nobody remembered.
Agents behave as if an MCP server were an older versionMCP servers · code freshness — infoMCP servers are started by your agent CLI, not by Command Center, so restart the agent CLI. Restarting Command Center does not reload them.

Install and update recovery

These rows cover the install's structural integrity — the platform tree, the generated agent configuration, and the doctrine files.

SymptomDoctor rowFix
Nearly every Core row fails at once; daemons and agent paths resolve to nothingPlatform tree present — fail, "no platform tree at this root"Either the home folder was never laid down here, or Settings points at the wrong folder. Use the row's Re-run lay-down here action, or point the project root (Settings) at the folder Command Center actually installed into.
Some platform folders exist, others are missingSame row — fail, "a partial lay-down"The initial copy did not finish. Re-run lay-down — it is idempotent and completes what is missing.
Agents cannot see their MCP servers on a fresh setup.mcp.json (agent config) — info, "not generated yet"Click Generate. This writes the agent configuration from your settings with real absolute paths for this machine.
A leftover configuration file from an early installConfig layout — infoThe row names the stray file and offers Remove stray file. The active configuration is unaffected either way.
You want the original shipped agents/skills/protocols back after editing themDoctrine (agents · skills · protocols) — infoUpdates seed new doctrine but never overwrite a file you changed. Refresh doctrine is the explicit restore: it backs up every changed file to .backups/doctrine_refresh_<timestamp>/ inside your install before overwriting, seeds anything missing, and never removes doctrine you added yourself.

For the full picture of what an update does and does not touch, see Concepts ▸ How updates work.


Video engines and media tools

The two video engines are opt-in installs — a fresh install without them is the normal state, not a problem.

SymptomDoctor rowFix
Engine rows say "not installed"Remotion / Hyperframes — infoInstall per engine from the Video tab, where each engine's license gate lives. Doctor's row links you there.
Engine installed, first render slow or waitingEngine row — info, "render browser not fetched yet"The render browser downloads automatically on first render. Let it finish, or retry the fetch from the Video tab.
An engine will not install because Node is missingNode.js (video engines) — info, "not installed"Press Install Node on that row. It puts a pinned Node into Command Center's own tools folder and changes nothing about your system. On platforms without a bundled build, the row says so and points you at nodejs.org.
Footage or video work fails on a missing ffmpegffmpeg / ffprobe — info, "not installed"No action usually needed — it fetches automatically on first use. The row offers Fetch now if you want it ahead of time.
A media tool is installed twice and the wrong copy is being usedAny Media row — the Prefer controlEach Media row carries a Prefer choice: Auto, System, or Managed. Auto uses your system copy once its major version meets the pinned one and falls back to the managed copy otherwise. Setting a preference for an install you do not have is called out in the row's detail rather than silently ignored.
Transcription and local speech-to-text unavailableWhisper models — info, "none installed yet"Install a model from Settings ▸ Speech-to-Text. One install serves both footage transcription and the Voice assistant's local speech-to-text.

Platform-specific behaviour

Two classes of symptom come from the machine rather than from Command Center. Both look like product faults and neither is.

Cortex draws no graph, but everything else in the view works

The graph canvas is GPU-rendered. Before drawing, Command Center tests whether this system can actually allocate what the renderer needs — not merely whether it claims to support it, because the two come apart on precisely the machines this affects. When the test fails, the canvas is replaced by an explanatory panel naming the reason and, where readable, the detected renderer.

Common causes: a virtual machine or virtual desktop with a paravirtual display adapter, an RDP or screen-shared session, hardware acceleration disabled by policy, or a very old or blocklisted graphics driver.

Everything else keeps working, and this is the point of the design. The knowledge graph itself is unaffected: Overview, Report, Lint and Log read the same data without a GPU, ingestion and search are untouched, and agents query the graph directly. There is deliberately no low-fidelity 2D fallback — a misleading picture of your graph would be worse than an honest panel.

The remedy is a host with working acceleration: enable hardware acceleration where policy allows it, connect to the machine locally instead of through a remote session, or use a machine with a GPU. See Cortex.

macOS

SymptomCauseWhat to do
The first dictation of a session never starts and never reports an error, with the Command Center window hiddenmacOS gates opening the microphone on window visibility, not focus. With the window hidden, the request is deferred and never settles.Bring the window on screen and press again. After the first acquisition the stream stays warm, so later dictation works with the window hidden.
macOS says the microphone permission is already granted, and the microphone still does not work after reinstallingPermission grants are bound to the exact signed build. Replacing the app can void a grant while the system still reports it as granted — and replacing the app is not a fresh install: your home folder, application support, keychain items, and permission grants all survive it.Reset both Microphone and Accessibility for Command Center and grant them again. Resetting only the microphone leaves the other half stale.
After an update, the boot log reports the platform files were re-laid because the tree changedThe version stamp matched but file contents did not, so the platform files were refreshed.Nothing — this is the healthy outcome, not an error.

Still stuck?

Check the FAQ for the questions that come up most, or contact support — include your Doctor findings and the app version, and you will get a substantive answer rather than a canned one.

On this page