opencode: monitor delivery never starts on its own — the rule file is not loaded, and the watcher's owner never matches the actas lock
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 48/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- bash, shell
- Área
- cli, developer-experience
Línea de trabajo
Start with scripts/drivers/types/opencode/type.conf, the generated .opencode/rules/agmsg.md, the OpenCode skill at ~/.config/opencode/skills/agmsg/SKILL.md, and the watch.sh and actas-claim.sh owner handling; compare these with OpenCode 1.19's instruction loading and the sentinel launch environment described in the report. Reproduce with the listed opencode run prompt and the minimal steps, then check how the owner tokens differ. Done when monitor instructions load, the claim and watcher agree on the owner, and the role filtered watcher starts for the reproduction.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Environment
- agmsg v1.5.3-4-ge3a9325 (the first observation was on 2026-10-15, with the install from that day)
- OpenCode 1.19.0 (V1 TUI), opencode-sentinel 0.1.5
- Linux (WSL2), herdr terminal driver
- Model: a local Qwen model behind an OpenAI-compatible endpoint
- Team: one OpenCode seat (
oc-worker, deliverymonitor) next to Claude Code and Codex seats
Summary
In monitor mode, a fresh OpenCode session does not start an inbox watcher by itself. When the model does start one with the rule's command, watch.sh refuses the pair, because the watcher and actas-claim.sh end up with different owner tokens. The only way we found to get delivery is to read owner= from the role-session record and pass it to watch.sh by hand.
1. .opencode/rules/agmsg.md is not loaded by OpenCode
delivery.sh set monitor opencode <project> writes <project>/.opencode/rules/agmsg.md (hooks_file in scripts/drivers/types/opencode/type.conf). OpenCode 1.19 does not load that path. Its instruction loader reads AGENTS.md, CLAUDE.md and CONTEXT.md, the global ~/.config/opencode/AGENTS.md, and whatever the config lists under instructions. Nothing in agmsg adds the rule file to instructions.
Check: in the project, opencode run "Do not use any tools. Does your system prompt contain a section titled 'agmsg Integration Rule'? Answer YES or NO." answers NO. The same question about a file listed under instructions answers YES and quotes it.
Effect: the "Real-time inbox watcher" step never reaches the model. The installed ~/.config/opencode/skills/agmsg/SKILL.md does not cover it either. Its actas steps are identities → join → set FROM → report, with no actas-claim.sh and no watcher. In our session the model did not start a watcher after actas, and a reviewer's LWPASS sat unread until someone poked the seat.
2. The watcher's owner token never matches the lock taken by actas-claim.sh
- The model runs
actas-claim.shthrough OpenCode's bash tool, whereSENTINEL_SESSION_IDis unset (echo "${SENTINEL_SESSION_ID:-(unset)}"prints(unset)). Whether the model passes-or"${SENTINEL_SESSION_ID:--}",agmsg_normalize_instance_idproduces-.<opencode pid>, and the lock owner becomes, for example,-.12345. - The rule's watcher command is
watch.sh "${SENTINEL_SESSION_ID:--}" <project> opencode. opencode-sentinel spawns it withSENTINEL_SESSION_IDset to the OpenCode session id (src/lib/watcher.ts:env: { ...process.env, SENTINEL_SESSION_ID: params.sessionID }), so the watcher's owner is derived fromses_…, not from-. - Passing a literal
-towatch.shdoes not help either: line 60 maps-to empty, and line 111 then mintsagmsg-<uuid>.
Observed (sentinel's stderr log, 2026-10-15):
agmsg watch: not serving these pairs (held by another session, or unverified): example-team/oc-worker(-.12345)
Minimal reproduction
- Install opencode-sentinel. Join an OpenCode seat to a team, then
delivery.sh set monitor opencode <project>. - Start
opencode, then$agmsg actas <name>. - Expected: a watcher starts and messages sent to
<name>stream in. Actual: no watcher starts (1). If you ask the model to start the rule's command throughsentinel_monitor, it exits with "not serving these pairs" (2).
Workaround we use
After actas-claim.sh "$(pwd)" opencode <name> -, read owner= from ~/.agents/skills/agmsg/run/role-session.<team>__<name>. Then start watch.sh '<owner>' <project> opencode <name> through sentinel_monitor. We put this procedure in a file listed under instructions. With it, a test message was answered within 3 seconds.
Possible directions (for discussion)
- Register the rule file under
instructionsin the project's OpenCode config, or move its content to a location OpenCode loads. - Make
actas-claim.shand the sentinel-launchedwatch.shderive the same owner foropencode, for example by not takingSENTINEL_SESSION_IDfrom the watcher's environment, or by havingwatch.shnormalize-the wayactas-claim.shdoes. Add the claim and the role-filtered watcher (4th argument) to the OpenCode skill'sactassteps.
Related: #1462 (OpenCode V2 changes; this report is about V1 1.19).
This report was drafted with an AI coding assistant (Claude Code) from our own session logs and the agmsg sources. I checked the observations and quoted output against the logs before filing.
- Lenguaje dominante
- Shell
- Estrellas
- 1.5k
- Forks
- 156
- Merge medio
- 14 h 56 min
- PR fusionados (30 d)
- 203
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de fujibee/agmsg
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
Los mantenedores suelen responder en 1 día
-
Add agmsg to awesome-ai-plugins?Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día
-
[P2] app: peer-message previews pass C0/DEL control bytes to pty_injectPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
Todos los issues de fujibee/agmsg
Issues similares
-
Isha NarulaAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 72/100
dataplat/DataSpeakers#178 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
btclib-org/claude-process#341 ·
-
command: start distro: Debian engine: null game: Teamspeak 3 reproducible: always severity: low type: bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
GameServerManagers/LinuxGSM#5193 ·
Los mantenedores suelen responder en 1 día
-
install: a relative or space-containing --tools-home writes a hook that cannot run, with no warningAbiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día
-
[BUG] mo clean deletes Cypress test runner binaries in ~/Library/Caches/CypressPosiblemente ocupada @viniciusdsandrade la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día