Pular para o conteúdo principal
Há três jeitos de um agente subir dentro do TYBA, e eles não dão a mesma proteção:

Digitar claude já liga o gate

No Linux, num shell bash ou zsh com a shell integration ligada — o padrão —, digitar claude sem argumentos não sobe o agente cru. O TYBA intercepta o comando antes de o processo nascer e sobe o claude com os hooks de aprovação, env filtrado e, quando a pasta permite, jaula. Tudo acontece no mesmo painel: sem botão, sem encerrar nada, sem sessão nova. O agente roda como filho do seu shell — quando ele sai, você volta ao prompt de onde digitou. Na primeira vez, um toast avisa da mudança:
Agora o TYBA dá jaula + gate quando você roda claude. Para rodar sem, use command claude.
Interceptar antes é o que torna isso possível. Os hooks de aprovação e a jaula só se montam no momento em que o processo nasce; num claude que já subiu cru, não há como pendurá-los depois. Para chegar antes, a shell integration define uma função de shell chamada claude — type claude mostra o que ela faz.

Quando entra a jaula

O gate vale sempre: comando de risco pede aprovação em qualquer pasta. A jaula, que limita o que o agente lê e escreve, só entra quando a pasta está dentro de um repositório git cuja raiz é uma pasta visível da sua home: Nos outros casos não existe uma raiz segura para a jaula. Sem repositório, não há limite a traçar; e um repositório na home, sob pasta oculta ou fora dela deixaria ao alcance do agente justamente o que a jaula protege — chaves, tokens, a config de outros programas. O TYBA não finge proteção: sobe com gate, sem jaula, e diz isso numa faixa âmbar no topo da sessão:
claude está com gate, mas sem jaula — a pasta não está sob um repositório visível na home.
A mesma faixa aparece quando o sistema não deixa montar a jaula — sem user namespaces, por exemplo. O gate continua valendo.
Sem jaula, o agente tem o alcance do seu usuário. O gate segue pedindo aprovação para comando de risco, mas o que passa sem precisar de aprovação não fica preso a uma pasta.

Rodar sem o TYBA

Dois jeitos, e os dois sobem o agente sem gate, como num terminal comum:
  • command claude pula a função e roda o binário direto.
  • claude com qualquer argumento — claude --resume, claude -p "…" — também sobe cru. Só o claude puro passa pelo gate: argumentos mudam como o agente sobe, e o TYBA não os repassa ao caminho protegido.
Se o TYBA não consegue preparar a sessão — o app não responde, a pasta deixou de existir —, o claude sobe cru em vez de não subir: um terminal que se recusa a rodar o que você digitou está quebrado. Em todos esses casos o TYBA percebe o agente sem gate e avisa, como descrito abaixo.

Onde não vale

  • Windows e macOS — digitar claude no shell não passa pelo gate.
  • fish, PowerShell e cmd — a função só existe em bash e zsh.
  • Shell integration desligada — a função não é instalada, nem no zsh nem no bash.
  • codex — só o claude passa pelo gate quando digitado.

Agente sem gate: o TYBA percebe e avisa

Quando um agente conhecido (claude, codex) começa a rodar sem gate dentro de uma sessão de shell, aparece uma tarja âmbar no topo daquela sessão:
⚠ claude está rodando fora do TYBA. Reabrir aqui liga a inbox de aprovações e o sandbox. [Reabrir com gate] [Agora não]
A tarja é por sessão, não por janela: se você tem um split com dois shells, só o que está rodando o agente mostra o aviso.
A detecção observa os processos do terminal — não depende de shell integration. Funciona com zsh, bash, fish, e com o claude instalado por qualquer caminho.

Reabrir com gate

O botão faz o único caminho que existe para dar gate a um agente já rodando: encerra o processo cru e sobe um novo, gerenciado, na mesma pasta. Não há como injetar as proteções num processo que já nasceu — os hooks são lidos no boot do agente. Por isso ele pede confirmação antes. O que acontece:
1

Confirmação

O TYBA avisa que vai encerrar o agente atual. Nada acontece sem o seu ok.
2

Encerramento cirúrgico

Só o agente morre — SIGTERM, um instante de espera, SIGKILL no que sobrar. O seu shell sobrevive e volta para o prompt.
3

Sessão gerenciada

Uma sessão nova sobe na mesma pasta, com inbox, sandbox e captura de subagentes.
A sessão nova começa sem histórico. A conversa do agente cru não é transportada. O transcript continua no disco: dentro do agente novo, use /resume para retomar de onde parou.

Quando não dá

A pasta precisa ser um repositório git. Sessão gerenciada é repo-centrada — é o que dá o painel de git, o diff e o alcance da jaula. claude rodando numa pasta sem git mostra erro claro, e o aviso continua ali.

Agora não

Esconde o aviso para aquele processo. Um agente novo no mesmo shell avisa de novo — e recarregar a janela traz o aviso de volta, de propósito: a sessão continua sem gate, e o TYBA não finge o contrário. O que não some é o selo sem gate no painel de sessões. Enquanto aquele agente estiver rodando sem proteção, o selo fica. Um claude que o TYBA subiu com gate não mostra o selo — com ou sem jaula.

O painel Agentes funciona nos dois casos

Os subagentes de um claude digitado no shell aparecem no painel Agentes com ou sem gate. Com gate, eles chegam pelos hooks, como numa sessão de agente. Sem gate, o TYBA lê o transcript no disco — é a única proteção que sobrevive ao caminho cru, e ela é só de leitura: mostra o que está acontecendo, não intercepta nada.

Veja também