-
Notifications
You must be signed in to change notification settings - Fork 0
Troubleshooting
-
Check both instances have the plugin loaded: run
/peers-namein each — it should show a name. -
Check the registry directory:
Files should exist with recent modification times.
ls $XDG_DATA_HOME/opencode-plugin-peers/peers.d/*.json
-
Check process liveness: the
pidin each registry file must match a running process:# Check if a PID is alive ps -p <pid>
-
Check stale window: if a process's heartbeat is older than
staleMs(30s default), it appears offline. Ensure heartbeats are running (checkheartbeatAtin the registry file).
This was fixed in 0.2.1 (display-layer collapse). Ensure you're running >= 0.2.1:
grep PLUGIN_VERSION ~/.cache/opencode/packages/opencode-plugin-peers@latest/node_modules/opencode-plugin-peers/dist/index.jsIf stale, update the cache:
cd ~/.cache/opencode/packages/opencode-plugin-peers@latest
npm install opencode-plugin-peers@latestThen restart opencode.
Fixed in 0.2.2 — the default name now includes a hex suffix (<dir>-<hex4>). Ensure you're running >= 0.2.2. If you set an explicit name or used /peers-name, the suffix is not added — use distinct names or let the default work.
Fixed in 0.2.1 — entries are now deterministically sorted by (startedAt, endpointId). Ensure you're running >= 0.2.1.
Two or more peers share the same display name. Either:
- Use
/peers-nameto give each a unique name, or - Target by endpoint ID:
send_message(to: "session-abc123", message: "...")
Find endpoint IDs via the list_agents tool.
- The target session may be unreachable. Check if the target's inbox listener is running.
- Check the spool directory:
spool/<endpoint>/queued/*.json— undelivered messages persist here. - The fallback sweep (
sweepMs, default 15s) will retry periodically.
- Verify
inboundPolicyis"hold"(or"auto"with cross-directory sender). - Held messages expire after
heldExpiryMs(default 5 min). If expired, they produce a finalexpiredACK. - Check the held spool:
spool/<endpoint>/held/*.json.
-
Check
peerPermissions: must be"allow"(default). -
Check if the request is in a protected category: credentials, shell startup files,
AGENTS.md, etc. are never auto-approved. - Check existing OpenCode deny rules: native deny rules always win over plugin auto-approval.
-
opencode version: the plugin uses bus events (
permission.asked/permission.v2.asked), not the SDK'spermission.askhook (which opencode 1.18 does not invoke).
The opencode package cache at ~/.cache/opencode/packages/opencode-plugin-peers@latest/ may have a stale pin. opencode plugin -g <name> does NOT refresh it:
cd ~/.cache/opencode/packages/opencode-plugin-peers@latest
npm install opencode-plugin-peers@latestAlso check if there's a ~/opencode-plugin-peers/ directory with its own pin that needs updating.
- Ensure the plugin is in
~/.config/opencode/tui.json(separate fromopencode.json). - Older opencode versions ignore the TUI entry — commands still work with default two-Enter behavior.
- Commands with arguments (
/peers-name frontend) always use normal submit.
Open a GitHub issue with:
- Plugin version (
/peers-nameoutput orPLUGIN_VERSIONin dist) - opencode version (
opencode --version) - OS and platform
- Relevant log output