Troubleshooting
A reference for the most common issues encountered when installing, configuring, and using Weave.
Weave Didn't Load
Symptom: OpenCode starts but you don't see "Weave loaded" confirmation, agents like Loom or Tapestry aren't available, or the plugin appears to be ignored.
Check these things:
opencode.jsonexists in your project root (not a subdirectory, not your home directory):shls opencode.jsonCorrect format — the
pluginfield must be an array with the exact package name:json{ "plugin": ["@opencode_weave/weave"] }Common mistakes:
- Using
"plugins"(plural) instead of"plugin" - Missing the array brackets:
"plugin": "@opencode_weave/weave"❌ - Typo in package name:
"@opencode/weave"❌
- Using
OpenCode version supports plugins — plugins require a recent version of OpenCode. Check your version:
shopencode --versionUpdate if needed via opencode.ai.
Restart OpenCode — plugin installation happens at startup. If you added Weave to an already-running instance, restart it.
Check for npm errors — OpenCode prints errors during plugin installation. If you see an npm error referencing
@opencode_weave/weave, check your internet connection or npm registry access.
Agents Not Appearing
Symptom: Weave loaded successfully, but some or all of the agents (Loom, Tapestry, Shuttle, etc.) aren't showing in the agent selector.
Check these things:
disabled_agentsconfig — check yourweave-opencode.jsoncfiles for adisabled_agentsarray:shcat .opencode/weave-opencode.jsonc cat ~/.config/opencode/weave-opencode.jsoncIf the agent is listed there, remove it or comment it out.
Per-agent
disable: true— check if the agent is individually disabled:jsonc// Remove this to re-enable the agent "agents": { "warp": { "disable": true } }For custom agents — naming rules:
- Name must be lowercase, only letters/numbers/hyphens/underscores
- Must not collide with built-in names (
loom,tapestry,shuttle,pattern,thread,spindle,weft,warp) - Must start with a letter (not a number)
Config file is valid JSONC — an invalid config file may cause the entire config to be skipped silently. Validate the JSON structure (JSONC allows comments and trailing commas, but braces must be balanced).
Config Not Being Applied
Symptom: You've added settings to weave-opencode.jsonc but Weave isn't picking them up.
Check these things:
File is at the correct path:
- Project config:
.opencode/weave-opencode.jsonc(note:.opencode/subdirectory, not the project root) - User config:
~/.config/opencode/weave-opencode.jsonc
- Project config:
Valid JSONC syntax — comments and trailing commas are allowed, but watch for:
- Unmatched braces
{} - Missing commas between properties
- Mismatched quote types
- Unmatched braces
Merge precedence — project config (
.opencode/weave-opencode.jsonc) always wins over user config. If you're setting something in user config but project config overrides it, the user value is ignored.Restart OpenCode — config is read at startup. Changes to config files require restarting OpenCode to take effect.
Check for silent failures — some config errors (like referencing a non-existent model ID) don't crash Weave but silently fall back to defaults. Check that model IDs are valid for your configured providers. If you haven't connected a provider yet, run
/connectinside OpenCode — see OpenCode provider docs.
/start-work Not Working
Symptom: You type /start-work and nothing happens, or you get an error about no plan found.
Check these things:
A plan file exists in
.weave/plans/—/start-worklooks for markdown files with unchecked- [ ]checkboxes:shls .weave/plans/If the directory is empty, you need to ask Loom to create a plan first (by describing a complex task).
The plan file has unchecked tasks — if all checkboxes in a plan are already checked (
- [x]), there's nothing to execute./start-workrequires at least one- [ ]item.The
startWorkhook is enabled — check thatstart-workisn't listed in yourdisabled_hooks:jsonc// This would break /start-work — don't do this "disabled_hooks": ["start-work"]Plan file follows the expected format — the plan must be a markdown file with GitHub-style task list checkboxes (
- [ ]and- [x]). Non-standard checkbox formats won't be recognized.
Tapestry Didn't Continue Automatically
Preview
The automatic continuation settings described in this section are currently in preview. If you need the most predictable behavior, prefer manual resume with /start-work or /run-workflow.
Symptom: You expected execution to resume, but Tapestry stayed idle or stopped after an interruption.
Check these things:
Was this compaction recovery or plain idle?
- By default, Weave resumes after compaction recovery
- By default, Weave does not nudge a merely idle session to continue
Your
continuationconfig:jsonc{ "continuation": { "recovery": { "compaction": true }, "idle": { "enabled": false, "work": false, "workflow": false, "todo_prompt": false } } }If
idle.workisfalse, an idle Tapestry session will stay quiet until you run/start-workagain.Relevant hooks are enabled:
work-continuationcontrols work recovery and idle work nudgesworkflowcontrols workflow continuation behavior
The plan is still resumable —
/start-workresumes from the first unchecked task. If every checkbox is already checked, there is nothing left to run.Manual resume is always available — if in doubt, run
/start-workagain.
See Execution & Continuation for the exact rules.
Todos Were or Weren't Finalized Unexpectedly
Symptom: Leftover in_progress todos were silently completed, or you expected a todo-finalization prompt and did not get one.
Check these things:
Direct todo repair can happen silently when Weave can write todos directly. This is expected.
Fallback todo prompting is separate — if you want a visible prompt when direct write is unavailable, enable:
jsonc{ "continuation": { "idle": { "todo_prompt": true } } }The
todo-continuation-enforcerhook must be enabled. If it is disabled indisabled_hooks, neither silent repair nor fallback prompting will run.Compaction restoration is separate from todo finalization —
compaction-todo-preserverrestores todo state after compaction, whiletodo-continuation-enforcerhandles leftoverin_progressitems.
Skills Not Loading
Symptom: You've assigned skills to agents in config but the agents don't seem to be using them, or you get errors about skills not being found.
Check these things:
Skill file is named exactly
SKILL.md(uppercase, exact name):✅ .opencode/skills/react/SKILL.md ❌ .opencode/skills/react/skill.md ❌ .opencode/skills/react/react.mdFile is in the correct location:
- Project skills:
.opencode/skills/<skill-name>/SKILL.md - User skills:
~/.config/opencode/skills/<skill-name>/SKILL.md
- Project skills:
Valid YAML frontmatter with a
namefield:markdown--- name: react-best-practices description: React development guidelines --- # React Best Practices ...The
namefield is what you reference in config.Skill name in config matches the frontmatter
name:jsonc{ "agents": { "shuttle": { "skills": ["react-best-practices"] // Must match frontmatter name } } }Skill is not in
disabled_skills:jsonc// Remove from here if present "disabled_skills": ["react-best-practices"]
Context Window Warnings
Symptom: You see warnings about context window usage during long sessions.
These come from the context-window-monitor hook, which tracks token usage automatically:
- At 80% usage: a warning is printed to help you plan ahead
- At 95% usage: recovery strategies are suggested (e.g., compacting the conversation)
To disable these warnings, add context-window-monitor to your disabled_hooks:
{
"disabled_hooks": ["context-window-monitor"]
}See Disabling Features for more about disabling hooks and other components.
Still having issues?
Check the GitHub repository for open issues and discussions. You can also check the Full Configuration Example to see a complete, working config that combines all features.
