Saltar al contenido principal
Hay tres formas de que un agente arranque dentro de TYBA, y no dan la misma protección:

Escribir claude ya activa el gate

En Linux, en un shell bash o zsh con la shell integration activada (viene así por defecto), escribir claude sin argumentos no arranca el agente crudo. TYBA intercepta el comando antes de que nazca el proceso y arranca claude con los hooks de aprobación, env filtrado y, cuando la carpeta lo permite, jaula. Todo pasa en el mismo panel: sin botón, sin cerrar nada, sin sesión nueva. El agente corre como hijo de tu shell — cuando sale, volvés al prompt desde donde lo escribiste. La primera vez, un toast avisa del cambio:
TYBA now jails + gates when you run claude. To run without it, use command claude.
Interceptar antes es lo que lo hace posible. Los hooks de aprobación y la jaula solo se montan en el momento en que nace el proceso; a un claude que ya arrancó crudo no hay forma de colgárselos después. Para llegar antes, la shell integration define una función de shell llamada claude — type claude muestra lo que hace.

Cuándo entra la jaula

El gate aplica siempre: un comando de riesgo pide aprobación en cualquier carpeta. La jaula, que limita lo que el agente lee y escribe, solo entra cuando la carpeta está dentro de un repositorio git cuya raíz es una carpeta visible de tu home: En los otros casos no existe una raíz segura para la jaula. Sin repositorio no hay límite que trazar; y un repositorio en la home, bajo una carpeta oculta o fuera de la home dejaría al alcance del agente justo lo que la jaula protege — claves, tokens, la config de otros programas. TYBA no finge protección: arranca con gate, sin jaula, y lo dice en una franja ámbar arriba de la sesión:
claude is gated, but not jailed — the folder isn’t under a repo visible under home.
La misma franja aparece cuando el sistema no deja montar la jaula — sin user namespaces, por ejemplo. El gate sigue aplicando.
Sin jaula, el agente tiene el alcance de tu usuario. El gate sigue pidiendo aprobación para comandos de riesgo, pero lo que pasa sin necesitar aprobación no queda limitado a una carpeta.

Correrlo sin TYBA

Dos formas, y las dos arrancan el agente sin gate, como en una terminal común:
  • command claude saltea la función y ejecuta el binario directo.
  • claude con cualquier argumento — claude --resume, claude -p "…" — también arranca crudo. Solo el claude pelado pasa por el gate: los argumentos cambian cómo arranca el agente, y TYBA no los pasa al camino protegido.
Si TYBA no logra preparar la sesión (la app no responde, la carpeta dejó de existir), claude arranca crudo en vez de no arrancar: una terminal que se niega a ejecutar lo que escribiste está rota. En todos esos casos TYBA detecta el agente sin gate y avisa, como se describe abajo.

Dónde no aplica

  • Windows y macOS — escribir claude en el shell no pasa por el gate.
  • fish, PowerShell y cmd — la función solo existe en bash y zsh.
  • Shell integration desactivada — la función no se instala, ni en zsh ni en bash.
  • codex — solo claude pasa por el gate cuando se escribe.

Agente sin gate: TYBA lo detecta y avisa

Cuando un agente conocido (claude, codex) empieza a correr sin gate dentro de una sesión de shell, aparece una franja ámbar arriba de esa sesión:
⚠ claude running without TYBA’s gate — no approval inbox, no sandbox [Reopen managed] [Ignore]
La franja es por sesión, no por ventana: si tenés un split con dos shells, solo el que está corriendo el agente muestra el aviso.
La detección observa los procesos de la terminal — no depende de shell integration. Funciona con zsh, bash, fish, y con claude instalado por cualquier camino.

Reabrir gestionado

El botón Reopen managed hace el único camino que existe para darle gate a un agente que ya está corriendo: termina el proceso crudo y arranca uno nuevo, gestionado, en la misma carpeta. No hay forma de inyectar las protecciones en un proceso que ya arrancó — los hooks se leen cuando el agente bootea. Por eso pide confirmación antes. Qué pasa:
1

Confirmación

TYBA te avisa que va a terminar el agente actual. No pasa nada sin tu ok.
2

Cierre quirúrgico

Solo muere el agente — SIGTERM, un instante de gracia, SIGKILL para lo que quede. Tu shell sobrevive y vuelve al prompt.
3

Sesión gestionada

Arranca una sesión nueva en la misma carpeta, con inbox, sandbox y captura de subagentes.
La sesión nueva empieza sin historial. La conversación del agente crudo no se transporta. El transcript queda en el disco: dentro del agente nuevo, usá /resume para retomar donde estabas.

Cuándo no se puede

La carpeta tiene que ser un repositorio git. Una sesión gestionada es repo-céntrica — es lo que da el panel de git, el diff y el alcance de la jaula. claude corriendo en una carpeta sin git muestra un error claro, y el aviso sigue ahí.

Ignorar

Ignore esconde el aviso para ese proceso. Un agente nuevo en el mismo shell avisa de nuevo — y recargar la ventana trae el aviso de vuelta, a propósito: la sesión sigue sin gate, y TYBA no finge lo contrario. Lo que no desaparece es el sello sin gate en el panel de sesiones. Mientras ese agente corra sin protección, el sello queda. Un claude que TYBA arrancó con gate no muestra el sello — con o sin jaula.

El panel Agentes funciona en los dos casos

Los subagentes de un claude escrito en el shell aparecen en el panel Agentes, con o sin gate. Con gate, llegan por los hooks, como en una sesión de agente. Sin gate, TYBA lee el transcript del disco — es la única protección que sobrevive al camino crudo, y es de solo lectura: muestra lo que pasa, no intercepta nada.

Ver también