Troubleshooting¶
Start with:
ifc-console doctor --file your-model.ifc
It checks Python, dependencies, settings, the port, viewer assets, and model
parsing. Add --json for machine-readable output.
Client connections¶
Client is disabled or not connected¶
Regenerate the current bridge setup and restart the client once:
ifc-console mcp-config --client <client>
The entry should run ifc-console ... bridge. Replace older direct URL, npx,
or mcp-remote setups. The bridge allows the client and console to start in
either order.
Regenerate setup after changing server.port. If persistent tokens are
disabled, use direct HTTP or standalone stdio instead.
401 unauthorized¶
The client has a stale token. Run /connect <client> again after token
rotation, deleting ~/.ifc-console, or moving a config between machines.
For Codex, bearer_token_env_var names an environment variable; it is not the
token value. Replacing the old entry with the current bridge setup is simpler.
Client uses an old model¶
It is probably a standalone stdio server with --file in its configuration.
Replace it with the default bridge setup. Then /file controls the shared
model.
Server and terminal¶
Port 8383 is in use¶
ifc-console doctor identifies the listener when possible.
- Existing ifc-console: use it or start another session with
--port 8390. - Other application: set another port, then regenerate client configs.
- Different ifc-console token: check whether processes use different
IFC_CONSOLE_HOMEdirectories.
Use /port 8390 to move a running session. Rotate the token if an old direct
HTTP client may have sent it to an untrusted listener.
Console needs a terminal¶
Use --no-tui for headless HTTP or serve --stdio for a client-owned process.
On Windows, prefer Windows Terminal.
Windows firewall prompt¶
Deny external access. Loopback on 127.0.0.1 continues to work.
Model and code¶
| problem | fix |
|---|---|
| mutations are blocked | review the change, run /mode edit, then /save or /reload |
MODEL_BUSY or paused session |
an in-process call timed out; run /reload |
| tainted session | guarded code changed memory unexpectedly; run /reload |
sandboxed: false |
run /sandbox to see why |
| first code run is slow | sandbox startup loads a second model copy; optionally enable sandbox.warm_on_load |
Common sandbox fallbacks are Python 3.10 or 3.11, unsaved changes, mutating
code, a model over sandbox.max_model_mb, or worker startup failure.
Save/reload, upgrade Python where applicable, try /sandbox restart, or use
sandbox.mode=strict to refuse fallback.
Viewer and chat¶
Assets are missing¶
uv tool install "ifc-console[viewer]" --force
# or: pip install --force-reinstall "ifc-console[viewer]"
Restart ifc-console. doctor reports optional for an intentional core-only
install and ok when assets are present.
Model is too large¶
Raise viewer.max_model_mb only if the browser has enough memory:
/settings viewer.max_model_mb 500
Viewer says unauthorized¶
Close the stale tab and run /viewer again.
Chat cannot reach a provider¶
Check the key, model ID, and base URL. Local servers need an OpenAI-compatible
/v1 URL. chat.local_only=true intentionally refuses remote URLs.
Logs and bug reports¶
- Live activity: console feed.
- Application log:
~/.ifc-console/logs/ifc-console.log. - Audit:
/auditorifc-console sessions show <id>.
Include ifc-console doctor --json and relevant log lines in a bug report.
Remove private paths and never upload a confidential model.