Repository navigation
feat(hive): guardia de escritura en el hive + piso de versión de Claude Code - #5
Conversation
…de Code Portado y adaptado de agentvivekkumar/dontbemichael. - hiveGuard.ts (de harnessGuard.ts): un PreToolUse niega Write/Edit/ MultiEdit/NotebookEdit dentro del hive salvo los archivos de protocolo del propio agente (memory.md, inbox/, outbox/, tasks.json; board.md y spawn-requests/ solo god). A diferencia del original protege solo el hive, no todo el harness home, porque aquí el home puede ser el padre de los proyectos del operador (y el cwd de god). Siempre activo. - modelCliFloor + claudeCliVersion: un modelo que el Claude Code instalado no conoce (Opus 5.5 < 2.1.280) se cambia por su fallback en spawnAgentCore, la puerta común de la UI, el canal de control y los workers. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0141jpRihLcQWr34jq6mvC7b
🚫 This PR is missing its before/after evidenceEvery pull request here has to show its work. Screenshots or a short screen recording, before the change and after it.
How to fix it: edit the description, keep the A bug fix with no visible surface still needs it: show the failing behaviour, then the same steps passing. A terminal recording is fine. Genuinely nothing to show — a CI tweak, a typo, a dependency bump? A maintainer can apply the |
…y-ramanujan-daxt74-guard
|
Este PR va apilado sobre #4, así que su CI completo solo corre cuando se retargetea a Generated by Claude Code |
What & why
PR 2 de la serie; va apilado sobre #4. Porta y adapta dos piezas de agentvivekkumar/dontbemichael (Vivek Kumar, MIT).
1. Guardia del hive (
hiveGuard.ts, adaptado deharnessGuard.ts). Un hookPreToolUseniegaWrite,Edit,MultiEdityNotebookEditdentro del hive, salvo en los archivos de protocolo que le tocan al agente:agents/<id>/memory.md,inbox/youtbox/;tasks.json;board.mdyspawn-requests/.Evita que un agente escriba en el buzón o la memoria de otro, o que toque
registry.json,fleet.jsonolog.jsonl. Esto atiende parte de los hallazgos #8 y #9 de la auditoría: una tarea que llega por Munder Link ya no puede corromper el hive con herramientas de archivo.Diferencia con el original: allá protegen todo el harness home. Aquí el home puede ser la carpeta padre de los proyectos del operador (y god corre con él como
cwd), así que solo se protege el hive, y queda siempre activo.Limitaciones que siguen, documentadas en el archivo: no revisa
Bash, y si el socket no responde, el hook deja pasar la escritura. La escritura concurrente atasks.json(#8) necesita su propio lock y no entra en este PR.2. Piso de versión de Claude Code (
modelCliFloor.ts+claudeCliVersion.ts). Si elclaudeinstalado no conoce el modelo pedido (Opus 5.5 requiere 2.1.280 o más), lo cambia por su fallback y lo deja en el log. Así el agente arranca en vez de morir al iniciar. El chequeo vive enspawnAgentCore, la puerta común de la UI, el canal de control (munder sesion armar) y los workers.Type of change
Evidence
Before
Sin guardia: un agente podía hacer
Writesobrehive/registry.jsono sobrehive/agents/jim/inbox/x.jsonsin ningún freno. El test del hook, corrido sin el cableado enhooks.ts:# pass 7 / # fail 1.After
test/hive-guard.test.cjs8/8. Incluye el paso por elHookServerreal: la escritura enregistry.jsonsale comopermissionDecision: 'deny'con una razón, mientras quememory.mdpropio y los archivos del repo pasan. También cubre intentos con..y con mayúsculas en sistemas de archivos que no distinguen mayúsculas.model-cli-floor8/8 yclaude-cli-version4/4.How I tested it
npm run typecheck(limpio) y la suite completa: 894 pasan. Los 5 fallos son los mismos de entorno de siempre (node-pty y Electron sin compilar). Enmodel-cli-floorquité la aserción de que Opus 5.5 es el modelo recomendado, porque es una decisión de producto de DBM y aquí el default es otro.Checklist
npm run typecheckpasa.🤖 Generated with Claude Code
Generated by Claude Code