Troubleshooting
Common issues and solutions for Weave configuration and CLI
Troubleshooting
Section titled “Troubleshooting”This page covers common issues you may encounter when using Weave, along with their causes and solutions.
Config not found
Section titled “Config not found”Symptom
Section titled “Symptom”Error: Config file not foundor
Error: No config file found at .weave/config.weaveWeave cannot locate a configuration file in the expected locations. This typically happens when:
- You have not run
weave inityet - The config file is in the wrong location
- The config file has the wrong name (must be
config.weave, notconfig.weave.txtor similar)
Solution
Section titled “Solution”-
Initialize Weave configuration:
Terminal window weave init --scope local --yesThis creates
.weave/config.weavein your project root. -
Verify the file exists:
Terminal window ls .weave/config.weave -
Check the file name: The config file must be named exactly
config.weave(notconfig.weave.txt,weave.config, or any other variation).
Related documentation: CLI Reference - weave init, DSL Configuration - Configuration Locations
Parse errors
Section titled “Parse errors”Symptom
Section titled “Symptom”3:12: unexpected token '}', expected identifieror
5:1: unclosed blockor
2:8: unterminated string literalThe DSL parser encountered invalid syntax. Common causes include:
- Missing closing braces
} - Unterminated string literals (missing closing quote)
- Invalid block structure
- Unexpected characters
Solution
Section titled “Solution”-
Check the line and column indicated in the error message. The format is
line:column: message. -
Common syntax mistakes:
Missing closing brace:
agent loom {temperature 0.5# Missing closing brace hereFix:
agent loom {temperature 0.5}Unterminated string:
agent loom {description "Orchestration coordinator}Fix:
agent loom {description "Orchestration coordinator"}Missing block name:
agent {temperature 0.5}Fix:
agent loom {temperature 0.5} -
Validate your config:
Terminal window weave validate
Related documentation: DSL Configuration, Agents
Prompt file not found
Section titled “Prompt file not found”Symptom
Section titled “Symptom”Error: Prompt file not found: custom-agent.mdor
Error: Could not resolve prompt file: loom.mdWeave cannot locate the prompt file specified in prompt_file. This happens when:
- The prompt file does not exist in
.weave/prompts/ - The
prompt_filevalue includes a directory path (not allowed) - The file name is misspelled
Solution
Section titled “Solution”-
Verify the prompt file exists:
Terminal window ls .weave/prompts/ -
Check the file name in your config:
agent custom-agent {prompt_file "custom-agent.md"} -
Ensure the file is in the correct directory:
- Project scope:
.weave/prompts/ - Global scope:
~/.weave/prompts/
- Project scope:
-
Use bare filenames only:
-
Create the missing prompt file:
Terminal window echo "# Custom Agent Prompt" > .weave/prompts/custom-agent.md
Related documentation: DSL Configuration - Prompt File Resolution, Agents
Adapter not loading (OpenCode)
Section titled “Adapter not loading (OpenCode)”Symptom
Section titled “Symptom”opencode debug config doesn’t list Weave’s agents (loom, tapestry, shuttle, and so on) under agent, or opencode debug info doesn’t show the Weave adapter among its plugins.
OpenCode loads Weave from the plugin list in opencode.json or opencode.jsonc. Common causes:
- The adapter isn’t in the
pluginlist, or the package name is misspelled - The entry is in
plugins(plural) or names@weaveio/weave-adapter-opencode2. Those are for OpenCode 2; see Adapter not loading (OpenCode 2) - The plugin points at a file instead of the package (for example
dist/index.js) - The legacy
@opencode_weave/weaveplugin is still listed alongside the adapter - OpenCode wasn’t restarted after the plugin list changed
Solution
Section titled “Solution”-
Check the
pluginlist in your project’sopencode.jsonoropencode.jsonc, and in~/.config/opencode/:{"plugin": ["@weaveio/weave-adapter-opencode@0.2.0"]}The package name is
@weaveio/weave-adapter-opencode. OpenCode fetches it when it starts, so there’s no separatenpm installstep. -
Remove the legacy plugin
@opencode_weave/weaveif it’s listed. See Upgrading from legacy Weave. -
Restart OpenCode, then check:
Terminal window opencode debug config -
Read the adapter log. The adapter writes to
.weave/weave.login your project (setWEAVE_LOG_FILEto change the path). Config and prompt errors appear there. -
Validate your config from the project root. Agents the adapter can’t register are reported by name:
Terminal window weave validate
Related documentation: Install for OpenCode, CLI Reference - Harness detection and installation
Adapter not loading (OpenCode 2)
Section titled “Adapter not loading (OpenCode 2)”Symptom
Section titled “Symptom”opencode2 starts, but the agent list has no loom, tapestry, shuttle, and so on, and new sessions don’t start on Loom.
OpenCode 2 loads Weave from the plugins list (plural) in opencode.jsonc or opencode.json. Common causes:
- The entry is in
plugin(singular). That’s OpenCode 1.x’s key, and OpenCode 2 doesn’t load it. - The entry names the OpenCode 1.x package,
@weaveio/weave-adapter-opencode, instead of@weaveio/weave-adapter-opencode2. - The entry has no version. That installs npm
latest; before 0.2.0 that was an adapter that registers no agents on OpenCode 2.0. - The entry combines a version with a subpath, such as
@weaveio/weave-adapter-opencode2@0.2.0/server. - The plugin is still installing. On the first start the agents can take up to a minute to appear.
Solution
Section titled “Solution”-
Check the
pluginslist in your project’sopencode.jsoncoropencode.json, and in~/.config/opencode/:{"plugins": ["@weaveio/weave-adapter-opencode2@0.2.0"]} -
Wait a minute and restart
opencode2if this is the first start after adding the plugin. -
Validate your config from the project root. If Weave’s status reports an invalid config, this names the problem:
Terminal window bunx @weaveio/weave-cli@0.2.0 validate
Related documentation: Install for OpenCode 2
Adapter not loading (Claude Code)
Section titled “Adapter not loading (Claude Code)”Symptom
Section titled “Symptom”Claude Code starts, but the agent list has no weave:loom, weave:shuttle, and so on, or the main agent isn’t Loom.
Claude Code loads Weave from two plugin directories that weave compose generates in your project. Common causes:
- Claude Code was started without both
--plugin-dirflags weave compose --adapter claude-code --inithasn’t been run in this project, so.weave/plugins/claude-code/doesn’t exist- The
weaveCLI isn’t installed globally, so the bootstrap plugin’sSessionStarthook can’t regenerate the agents (the hook reports[weave] compose skipped)
Solution
Section titled “Solution”-
Generate the plugins from the project root:
Terminal window weave compose --adapter claude-code --init -
Start Claude Code with both plugin directories:
Terminal window claude --plugin-dir ./weave-bootstrap-plugin --plugin-dir ./.weave/plugins/claude-code -
Install the CLI globally if the hook can’t find it:
Terminal window bun add --global @weaveio/weave-cli@0.2.0 -
Validate your config. Agents that can’t be generated are reported by name:
Terminal window weave validate
Related documentation: Install for Claude Code, CLI Reference - Harness detection and installation
weave run not supported
Section titled “weave run not supported”Symptom
Section titled “Symptom”Weave does not run harness runtimes directly.and weave run exits with code 1.
weave run is not a valid command. Weave configures harnesses but does not run them directly.
Solution
Section titled “Solution”-
Initialize Weave configuration:
Terminal window weave init --scope local --yes -
Launch your harness using its native command:
- OpenCode:
opencode - OpenCode 2:
opencode2 - Claude Code:
claude --plugin-dir ./weave-bootstrap-plugin --plugin-dir ./.weave/plugins/claude-code
- OpenCode:
-
Verify your config is loaded:
Terminal window weave validateweave prompt list
Related documentation: CLI Reference - No runtime execution, Quickstart
Migration warnings
Section titled “Migration warnings”Symptom
Section titled “Symptom”⚠ Migration warnings — the following legacy fields were skipped:
• skill_directories: legacy skill_directories are not migrated; move or symlink those skills into a directory your harness discovers (for OpenCode, .opencode/skills/) • custom_agents.code-reviewer.triggers: legacy structured triggers ({ domain, trigger }) are not migrated; add string triggers to the agent if Loom should route to it • categories.backend.patterns: patterns are removed; describe routing with category description and string triggers • workflows: legacy workflow definitions are not supported in migration v1; define workflows using the current DSL workflow syntaxweave init migrate found legacy fields that have no equivalent in the current DSL. This is expected: migration converts what it can and reports the rest.
Solution
Section titled “Solution”Migration warnings don’t stop the migration. The config file is written, the command exits with code 0, and the same warnings are recorded as comments at the top of the migrated config.weave.
-
Review each warning. Common ones:
skill_directories: move or symlink the skills into.opencode/skills/.disabled_tools: usetool_policyon the agent or category instead.- Custom agent
triggers: add string triggers to the agent. - Category
patterns: categories route bydescriptionandtriggers. See Routing. workflows: define workflows with the DSL workflow syntax.- Agent name collisions: rename a custom agent that reuses a builtin name (
loom,tapestry,shuttle,pattern,thread,spindle,weft,warp). - Custom agent with no prompt: add a
promptorprompt_fileto the agent inconfig.weave.
-
Validate your migrated config from the project root:
Terminal window weave validate -
Inspect agent prompts:
Terminal window weave prompt listweave prompt inspect loom
Migration fails with exit code 1
Section titled “Migration fails with exit code 1”| Message | What to do |
|---|---|
No legacy config found for scope "local". |
Migration only detects weave-opencode.jsonc. Rename a .json file to .jsonc, run from the project root, or use --scope global for the user config. |
Migration failed: The legacy config could not be converted, so nothing was written. |
The legacy file isn’t valid JSONC. Fix the syntax and run again. |
Interactive mode is unavailable. Re-run with --yes and --scope global|local. |
You ran without a terminal (for example in CI). Add --yes and --scope. |
Related documentation: Upgrading from legacy Weave, CLI Reference - weave init migrate
Validation errors
Section titled “Validation errors”Symptom
Section titled “Symptom”config.weave:[agents.loom.temperature] Too big: expected number to be <=2or
config.weave:[agents.custom.mode] Invalid option: expected one of "primary"|"subagent"|"all"or, for configs written for Weave 0.1.x:
config.weave:[categories.backend] Unrecognized key: "patterns"config.weave:[categories.backend.description] Invalid input: expected string, received undefinedconfig.weave:[agents.loom.triggers.0] triggers must contain quoted stringsThe config file contains values that fail schema validation. Common causes:
- Fields removed in Weave 0.2.0: category
patternsand object triggers. Every category also needs adescription. See Categories. - Invalid enum values (e.g.,
mode "worker"instead ofmode subagent) - Out-of-range numbers (e.g.,
temperature 3when max is 2) - Wrong value types (e.g., string instead of number)
Solution
Section titled “Solution”-
Check the validation error message for the field path and expected value.
-
Fix the invalid value:
Invalid enum:
agent custom {mode worker # Invalid}Fix:
agent custom {mode subagent}Out-of-range number:
agent loom {temperature 3 # Invalid (max is 2)}Fix:
agent loom {temperature 0.7} -
Validate your config:
Terminal window weave validate
Related documentation: DSL Configuration, Tool Policy
Tool policy errors
Section titled “Tool policy errors”Symptom
Section titled “Symptom”[agent.custom.tool_policy.unknown_tool] Unrecognized keyor
Error: Invalid tool policy capabilityThe tool_policy block contains invalid tool names or capability values. Common causes:
- Harness-specific tool names (e.g.,
call_weave_agent) that cannot be mapped to abstract capabilities - Typos in tool names
- Invalid capability values (must be
allow,deny, orask)
Solution
Section titled “Solution”-
Use only recognized tool policy capabilities:
tool_policy {read allowwrite allowexecute allowdelegate denynetwork ask} -
Remove harness-specific tool names:
Do not use harness-specific tool names like call_weave_agent, read_file, write_file, etc. Use abstract capabilities instead: read, write, execute, delegate, network.
:::
-
Validate your config:
Terminal window weave validate
Related documentation: DSL Configuration - Tool Policy, Tool Policy
Need more help?
Section titled “Need more help?”If you encounter an issue not covered here:
- Check the error message for line and column numbers, then inspect your config at that location.
- Validate your config with
weave validateto get detailed error messages. - Review the documentation:
- DSL Configuration for syntax and structure
- CLI Reference for command usage
- Agents for agent configuration
- Tool Policy for tool permissions
- Check the GitHub repository for known issues and discussions.