Hooks y guards
Todo lo de esta página está apagado hasta que tú lo enciendas, y la mayor parte aconseja en lugar de denegar.
Qué es#
Los guards son chequeos que puedes correr a mano, desde un hook de git o desde un hook de IDE:
| Comando | Qué deniega |
|---|---|
orch guard dup <file> |
Un archivo que duplica un símbolo compartido; además reporta cuerpos de función copiados |
orch guard code-lang [root] |
Identificadores y cadenas visibles que no corresponden a workspace.code_lang |
orch guard lang [root] |
Documentos que no corresponden a workspace.locale |
orch guard ddl [files...] |
Una migración o CREATE TABLE sin su seeder o repositorio acompañante |
orch guard tracker [path] |
Una tabla de estado TRACKER que rompe T1–T4: status inválido, SPEC sin .md, VERIFIED sin evidencia, volcado narrativo |
Hay más: comment, lock, add-all, shared-brand, control-bytes, artifacts, encoding.
Los hooks son dos puntos de entrada a tu harness, cada uno con su propia clave de consentimiento en orch.yaml:
| Clave | Dispara en | Qué hace |
|---|---|---|
context.hooks.post_tool |
PostToolUse de Claude Code, tool.execute.after de OpenCode |
Encoge el resultado de una herramienta antes de que caiga en la ventana de contexto |
context.hooks.pre_compact |
PreCompact de Claude Code |
Corre el condensador de orch memory condense sobre la memoria del taller antes de que el harness compacte |
Ambos son false por defecto. Copilot CLI y Cursor exponen la misma capacidad pero orch todavía no tiene ruta de conexión para ninguno, así que no se instala nada; Codex CLI directamente no puede reemplazar la salida de una herramienta.
Conexión:
orch guard wire # desde guard.profile, o --git / --claude / --cursor
orch guard unwire # agrega --git para quitar también los hooks de git
orch guard hooks install # pre-commit + pre-push de git, marcados por orch
orch guard hooks status
orch guard profile # muestra, o fija: lite | shared | strict | bring | none
Consultivo o bloqueante#
La distinción es por guard.
- Consultivo — el escaneo de clones, por defecto.
guard.dup.mode: advisoryreporta lo que encontró y lo inyecta como contexto; la escritura sigue. Ponblocky ese mismo hallazgo hace fallar la llamada conclone guard denied N duplicated block(s); ponoffy ni mira. - Bloqueante — todos los demás guards. Un hallazgo se imprime en stderr y el comando sale con código distinto de cero, así que un hook de pre-commit detiene el commit.
- Omisión suave — fuera de un taller vinculado, o cuando la configuración correspondiente no está fijada.
orch guard langsinworkspace.localese omite en vez de adivinar.
Por qué existe#
Lecciones de campo, baratas de enunciar y caras de aprender. git add -A sobre una capa compartida se roba el trabajo en curso de otra sesión. Conversar con un modelo en un idioma mete ese idioma en identificadores y mensajes de error. Una migración sin seeder pasa la revisión y falla en producción. Nada de esto necesita un motor de políticas: necesita un chequeo en el momento en que se comete el error.
Son opt-in porque el taller es tuyo: orch init llama al kit inicial recommendations, not mandates.
Cómo se relaciona con el resto#
- La misma batería de guardrails corre dos veces: desde el hook de pre-commit que instalaste, y otra vez al cerrar una sesión, sobre exactamente los archivos que esa sesión tocó. Esa segunda corrida es la mitad observada del reporte de verificación.
orch harness scanreporta qué herramientas de IA y superficies de doctrina alcanza a ver, antes de que decidas qué conectar.- Los perfiles de guard controlan qué conecta
orch init:litesiembra documentos y skills sin hooks,noneomite del todo las siembras de doctrina.
Aquí no hay nada que ejecutar#
Nada de esto corre si no lo conectas. Corre los guards a mano si eso es todo lo que quieres; orch guard wire es el interruptor que los hace valer.