Troubleshooting
No Project Selected
Symptom:
No project selected. Use /project to choose a folder before running a task.
Fix:
proto-cli project set ~/projects/my-app
or in the TUI:
/project
Model Not Selected
Symptom:
No model selected for provider 'ollama'
Fix:
proto-cli model
Then run:
proto-cli check
ProtoLink Missing Or Not Ready
Symptom:
Protolink missing
or runtime readiness fields are unavailable.
Fix:
source .venv/bin/activate
pip install "protolink[http,llms]>=0.6.6"
proto-cli check
check should report streaming, metrics, compaction, context, state, reports,
cancellation, logging, auth, transport, and web tools as ready. Web-tool
readiness is separate from baseline agent_ready because Scout is optional.
Scout Is Off Or Search Fails
Inspect the current agent settings:
proto-cli agents scout
proto-cli check
Enable Scout for the next run:
proto-cli agents scout on
If web_tools_ready is unavailable, install ProtoLink 0.6.6 or newer. Brave is
the default search engine and needs:
export BRAVE_SEARCH_API_KEY=...
DuckDuckGo is a keyless best-effort engine; English Wikipedia is keyless
factual search. Architect can pass either to web_search. Wikipedia only supports
freshness="any". URL fetching intentionally rejects private/loopback hosts,
nonstandard ports, unsafe redirects, binary content, and oversized responses.
These rejections are safety behavior, not general network failures.
Scout's direct delegated tools are policy- and cancellation-aware, but
ProtoLink 0.6.6 does not yet count that direct path against
RunBudget.max_tool_calls. Keep Scout disabled when external calls are not
needed; ProtoAgent intentionally does not add a second local budget counter.
Localhost Runtime Fails In A Sandbox
Symptom can look like:
PermissionError: [Errno 1] Operation not permitted
This can be an environment restriction on binding or connecting to localhost, not necessarily a ProtoAgent regression.
Try:
PROTOAGENT_AGENT_TRANSPORT=http PROTOAGENT_STREAM=0 proto-cli run "diagnose runtime"
If the environment blocks even local ports, use scaffold mode to verify the Rust/Python boundary:
PROTOAGENT_SCAFFOLD=1 proto-cli run "diagnose runtime"
Context Loom Misses The Right File
Steps:
/index refresh
/context the exact feature or path name
Then inspect:
- Whether the file is ignored, binary, too large, or outside the active project.
- Whether query terms match path, symbols, headings, imports, or content.
- Whether a git-changed file should get a relevance boost.
- Whether
Unchangedis high: that is expected during an incremental refresh and means those files were not reread because size and modification time still matched.
Source files:
core/protoagent_core/context/indexer.pycore/protoagent_core/context/packer.py
TUI Trace Is Hard To Share
Use one-shot capture:
PROTOAGENT_TRACE=1 proto-cli run "your failing task" 2>&1 | tee /tmp/protoagent-debug.txt
tail -n 80 "${PROTOAGENT_CONFIG_DIR:-$HOME/.protoagent}/traces.jsonl"
The TUI /trace view is for live inspection. The one-shot runner is the better
copy-paste artifact.
API Key Looks Stale
Model inventory caches recent validation results briefly. To force a real refresh, wait for the retry window or restart the process, then run:
proto-cli models
If a live run succeeds, remember_valid_provider() marks that provider/model
combination as recently valid.
Approval Did Not Execute
Check:
- Did the diff modal show a
workspace.writeapproval? - Was the request denied?
- Did cancellation arrive while waiting for approval?
- Did the target path fail
safe_path()?
Relevant files:
core/protoagent_core/agents/coder.pycore/protoagent_core/runtime_bridge.pycli/src/progress.rscli/src/terminal_ui/approval.rs
Memory Feels Wrong
First check whether persistent memory is on:
/context memory
Then inspect model-facing memory:
/context history
Remember:
sessions.jsonis a Rust UI ledger.conversations.sqliteis model-facing ProtoLink state./context offmakes each task use task-local state./context resetclears saved ProtoLink histories for the active project session.