
Segurança em Camada de Execução (ELS) para agentes de IA — shell com política imposta e auditoria.
Nota para macOS: A aplicação nativa no macOS via ESF (Endpoint Security Framework) + NE (Network Extension) está em Alpha. Ela funciona de ponta a ponta — eventos de arquivo, processo e rede fluem através da extensão do sistema para o mecanismo de políticas em Go — mas espere arestas e mudanças significativas entre versões. Para uso em produção hoje, recomendamos Linux.
Nota para Windows: Estamos trabalhando para obter a assinatura dos drivers minifilter. Até lá, apenas o modo Windows WSL2 é totalmente compatível para uso em produção.
Gateway de execução seguro e com aplicação de políticas para agentes de IA.
O agentsh fica abaixo do seu agente/ferramentas — interceptando atividades de arquivo, rede, processo e sinal (incluindo árvores de subprocessos), aplicando a política que você define e emitindo eventos de auditoria estruturados.
Nota de plataforma: Linux oferece aplicação total (100% de pontuação de segurança). O ESF+NE do macOS (90% de pontuação) está em Alpha — funcional, mas não pronto para produção. O WSL2 do Windows oferece aplicação total equivalente ao Linux (100% de pontuação); o Windows nativo via driver minifilter + AppContainer (85% de pontuação) está pendente de assinatura do driver. Veja a Matriz de Comparação de Plataformas para detalhes.
allow, deny, approve (aprovação humana), soft_delete ou redirect.db_services declaradosFluxos de trabalho de agentes eventualmente executam código arbitrário (pip install, make test, python script.py). Os controles tradicionais de "pedir aprovação antes de executar um comando" param no limite da ferramenta e não conseguem ver o que acontece dentro desse comando.
O agentsh aplica a política em tempo de execução, de modo que o trabalho oculto realizado por subprocessos ainda é governado, registrado e (quando necessário) aprovado.
A maioria dos sistemas pode negar uma ação. O agentsh também pode redirecioná-la.
Isso significa que quando um agente tenta a abordagem errada (ou soluções alternativas por força bruta), a política pode direcioná-lo para o caminho correto, trocando o comando e retornando orientação — mantendo o agente no caminho pavimentado e reduzindo tentativas desperdiçadas.
Exemplo: redirecionar curl para um wrapper auditado```yaml command_rules:
**Exemplo: redirecionar escritas fora do workspace de volta para dentro**```yaml
file_rules:
- name: redirect-outside-writes
paths: ["/home/**", "/tmp/**"]
operations: [write, create]
decision: redirect
redirect_to: "/workspace/.scratch"
message: "Writes outside workspace redirected to /workspace/.scratch"
O agente vê uma operação bem-sucedida (não um erro), mas você controla onde as coisas realmente ocorrem.
Containers isolam a superfície do host; agentsh adiciona visibilidade e política em tempo de execução dentro do container.
macOS (Homebrew)```bash brew tap canyonroad/tap brew install --cask agentsh
Isto instala o pacote de aplicativos AgentSH com a extensão de sistema ESF+NE. Após a instalação, será solicitado que você aprove a extensão do sistema em **System Settings > General > Login Items & Extensions**.
**Linux (a partir de um GitHub Release)**
Baixe o `.deb`, `.rpm` ou `.apk` para sua plataforma na [página de releases](https://github.com/erans/agentsh/releases).```bash
# Example for Debian/Ubuntu
sudo dpkg -i agentsh_<VERSION>_linux_amd64.deb
A partir do código fonte (Linux)```bash make build sudo install -m 0755 bin/agentsh bin/agentsh-shell-shim /usr/local/bin
**A partir do código-fonte (macOS)**```bash
# ESF+NE mode (full enforcement — Alpha, requires Xcode 15+)
make build-macos-enterprise
Veja macOS Build Guide para instruções detalhadas de compilação no macOS.
./bin/agentsh server --config configs/server-config.yaml
SID=$(./bin/agentsh session create --workspace . --json | jq -r .id) ./bin/agentsh exec "$SID" -- ls -la
./bin/agentsh exec --output json --events summary "$SID" -- curl https://example.com
---
### Verificar o que é aplicado
`agentsh detect` sonda o host e relata quais primitivas de aplicação estão realmente disponíveis — seccomp, Landlock, FUSE, eBPF, ptrace, cgroups — agrupadas em pontuações de proteção por domínio, além do modo de segurança selecionado. Em hosts restritos (Daytona, E2B, Firecracker-class) onde o listener user-notify do seccomp não pode ser instalado, ele relata o modo que *realmente* aplicará em vez do que o kernel meramente suporta.```bash
agentsh detect # human-readable protection report
agentsh detect config # emit a config tuned for this host
Consulte Modos de Segurança para a matriz de modos e parâmetros de ajuste.
agentsh exec $SID -- <your-command-here>agentsh exec --output json --events summary $SID -- <your-command-here>SID=$(agentsh session create --workspace . --json | jq -r .id)---
### Início automático (sem etapa manual do daemon)
Você **não** precisa iniciar `agentsh server` manualmente.
* O primeiro `agentsh exec` (ou qualquer `/bin/sh`/`/bin/bash` com shim) iniciará automaticamente um servidor local usando `configs/server-config.yaml` (ou `AGENTSH_CONFIG`, se definido).
* Esse servidor mantém a camada FUSE e o mecanismo de políticas ativos durante a sessão; comandos subsequentes o reutilizam.
* Defina `AGENTSH_NO_AUTO=1` se quiser gerenciar o ciclo de vida do servidor manualmente.
---
## Uso no Docker (com o shim do shell)
Veja `Dockerfile.example` para uma imagem mínima baseada em Debian.
Dentro da imagem, instale um pacote de lançamento (ou copie sua compilação) e ative o shim:```bash
agentsh shim install-shell \
--root / \
--shim /usr/bin/agentsh-shell-shim \
--bash \
--i-understand-this-modifies-the-host
Aponte o shim para o seu servidor (sidecar ou host):```dockerfile ENV AGENTSH_SERVER=http://127.0.0.1:18080
Agora, qualquer `/bin/sh -c ...` ou `/bin/bash -lc ...` no contêiner é roteado através do agentsh.
### Aplicação não interativa
Por padrão, o shim ignora a política quando stdin não é um TTY (preservando dados binários para comandos com pipe). Em plataformas onde os comandos são sempre não interativos mas ainda precisam de aplicação (por exemplo, exe.dev, sandbox APIs), adicione `--force`:```bash
agentsh shim install-shell \
--root / \
--shim /usr/bin/agentsh-shell-shim \
--bash \
--force \
--i-understand-this-modifies-the-host
Isto escreve /etc/agentsh/shim.conf com force=true, que o shim lê na inicialização. O arquivo de configuração funciona independentemente de como o shell é gerado (ao contrário de variáveis de ambiente ou scripts de perfil). AGENTSH_SHIM_FORCE=1 no ambiente do processo atinge o mesmo efeito por processo.
Padrão recomendado: executar agentsh como um sidecar (ou PID 1) no mesmo pod/serviço e compartilhar um volume de workspace; o shim garante que cada salto de shell permaneça sob a política.
allowdenyapprove (aprovação humana)redirect (substituir um comando)audit (permitir + registrar)soft_delete (quarentena exclusões com restauração)As regras vivem em uma política nomeada; as sessões escolhem uma política.
Padrões:
configs/server-config.yamlconfigs/policies/default.yamlAGENTSH_POLICY_NAME para um nome de política permitido (sem sufixo). Se não definido/inválido/não permitido, o padrão é usado.policies.env_policy (allow/deny, max_bytes, max_keys, block_iteration) e substituições env_* por comando nos arquivos de política. Lista de permissões vazia padrão para PATH/LANG/TERM/HOME mínimos com lista de negação de segredos embutida; defina block_iteration para ocultar iteração de ambiente (requer env shim).policies.allowed em config.yml; vazio significa que apenas o padrão é permitido.policies.manifest_path para um manifesto SHA256 para verificar arquivos de política no momento do carregamento.env_allow, agentsh constrói um ambiente mínimo (PATH/LANG/TERM/HOME) e remove chaves secretas embutidas.env_allow/env_deny por comando mais env_max_keys/env_max_bytes limitam e filtram o ambiente filho no momento da execução.env_block_iteration: true (global ou por regra) oculta a enumeração do ambiente; defina policies.env_shim_path para libenvshim.so para que agentsh injete LD_PRELOAD + AGENTSH_ENV_BLOCK_ITERATION=1.BASH_ENV para desabilitar builtins de shell que contornam seccomp. Configure em (global) ou em nível de política (substitui global).version: 1 name: default
file_rules:
name: allow-workspace paths: ["/workspace", "/workspace/**"] operations: [read, open, stat, list, write, create, mkdir, chmod, rename] decision: allow
name: approve-workspace-delete paths: ["/workspace", "/workspace/**"] operations: [delete, rmdir] decision: approve message: "Delete {{.Path}}?" timeout: 5m
name: deny-ssh-keys paths: ["/home//.ssh/", "/root/.ssh/**"] operations: ["*"] decision: deny
network_rules:
command_rules:
---
### Usando uma política```bash
# Start the server with your policy
./bin/agentsh server --config configs/server-config.yaml
# Create a session pinned to a policy
SID=$(./bin/agentsh session create --workspace /workspace --policy default --json | jq -r .id)
# Exec commands; responses include decision + guidance when blocked/approved
./bin/agentsh exec "$SID" -- rm -rf /workspace/tmp
O agentsh suporta múltiplos métodos de autenticação:
| Tipo | Caso de Uso |
|---|---|
api_key | Implantações simples com chaves estáticas |
oidc | SSO empresarial (Okta, Azure AD, etc.) |
hybrid | Ambos os métodos aceitos |
Modos de aprovação para verificação humano-no-loop:
local_tty - Prompt do terminal (padrão)totp - Códigos de aplicativo autenticadorwebauthn - Chaves de segurança de hardware (YubiKey)api - Aprovação remota via RESTVeja SECURITY.md para detalhes de configuração.
Veja SECURITY.md para opções completas de configuração, ou execute a Demonstração de Proteção MCP para ver essas detecções em ação.
A maneira mais rápida de "entender" é executar algo que gere subprocessos e toque no sistema de arquivos/rede.```bash
SID=$(agentsh session create --workspace . --json | jq -r .id)
agentsh exec "$SID" -- uname -a
agentsh exec --output json --events summary "$SID" -- curl -s https://example.com
agentsh exec "$SID" -- rm -rf ./tmp
agentsh exec --output json --events all "$SID" -- ls
**O que você verá na saída JSON:**
- `exit_code`: o status de saída do comando
- `stdout` / `stderr`: saída capturada
- `events[]`: todas as operações de arquivo/rede/processo com decisões de política
- `policy.decision`: `allow`, `deny`, `approve` ou `redirect`
Dica: mantenha um terminal com `--output json` aberto ao testar políticas — isso torna óbvio o que está sendo tocado.
---
### Relatórios de Sessão
Gerar relatórios markdown resumindo a atividade da sessão:```bash
# Quick summary
agentsh report latest --level=summary
# Detailed investigation
agentsh report <session-id> --level=detailed --output=report.md
Relatórios incluem:
Veja o Guia de Integração CI/CD para exemplos de pipeline.
Crie snapshots do estado do espaço de trabalho para recuperação de operações destrutivas:```bash
agentsh checkpoint create --session $SID --workspace /workspace --reason "before cleanup"
agentsh checkpoint list --session $SID
agentsh checkpoint show --session $SID --workspace /workspace --diff
agentsh checkpoint rollback --session $SID --workspace /workspace --dry-run
agentsh checkpoint rollback --session $SID --workspace /workspace
agentsh checkpoint purge --session $SID --older-than 24h --keep 5
**Auto-checkpoint:** Quando ativado, agentsh cria automaticamente pontos de verificação antes de comandos arriscados (`rm`, `mv`, `git reset`, `git checkout`, etc.). Configure em `sessions.checkpoints.auto_checkpoint`.
Consulte [SECURITY.md](https://github.com/canyonroad/agentsh/blob/HEAD/SECURITY.md#checkpoint-and-rollback) para opções completas de configuração.
---
### Proxy LLM e DLP
agentsh inclui um proxy embutido que intercepta todas as requisições de API LLM dos agentes:```bash
# Check proxy status for a session
agentsh proxy status <session-id>
# View LLM-specific events
agentsh session logs <session-id> --type=llm
Funcionalidades:
ANTHROPIC_BASE_URL e OPENAI_BASE_URL para que os SDKs de agente roteiem através do proxyConfiguração do provedor:```yaml proxy: mode: embedded providers: anthropic: https://api.anthropic.com # Default Anthropic API openai: https://api.openai.com # Default OpenAI API
# Or use alternative providers:
# openai: http://localhost:8000 # LiteLLM / vLLM
# openai: https://your-resource.openai.azure.com # Azure OpenAI
# anthropic: https://llm.corp.example.com # Corporate gateway
**Configuração DLP:**```yaml
dlp:
mode: redact
patterns:
email: true
api_keys: true
custom_patterns:
- name: customer_id
display: identifier
regex: "CUST-[0-9]{8}"
Consulte a Documentação do Proxy LLM para opções completas de configuração.
O mesmo proxy também despacha entradas declaradas http_services — upstreams de API nomeados com regras por método e por caminho. Consulte os Serviços HTTP Declarados e o Manual de Serviços HTTP para mais detalhes.
agentsh pode aplicar políticas em serviços de banco de dados declarados através de db_services, database_connection_rules e database_rules. A implementação atual é apenas da família Postgres: PostgreSQL é o alvo suportado, com Aurora Postgres usando o mesmo caminho e Redshift/CockroachDB tratados como dialetos compatíveis com Postgres com cobertura beta. MySQL, MongoDB, Snowflake, BigQuery, Databricks, ClickHouse, MSSQL, Cassandra, Redis e Oracle são itens de roadmap, sem suporte atual em tempo de execução.
O suporte atual ao Postgres inclui:
redirect seguro em tempo de execução para substituição de relação Postgres somente leitura.O runtime do proxy Postgres é código em processo apenas para Linux atualmente. Use Linux nativo, WSL2 ou um ambiente de VM Linux para aplicação de banco de dados.
Consulte Controle de Acesso a Banco de Dados e Documentação de Políticas.
Gere políticas restritivas a partir do comportamento observado da sessão (fluxo de trabalho "perfil-depois-bloqueio"):```bash
agentsh policy generate latest --output=ci-policy.yaml
agentsh policy generate abc123 --name=production-build --threshold=10
agentsh policy generate latest
The generated policy:
- Permite apenas operações observadas durante a sessão
- Agrupa caminhos em globs quando muitos arquivos no mesmo diretório
- Colapsa subdomínios em curingas (ex.: `*.github.com`)
- Sinaliza comandos arriscados (curl, wget, rm) com padrões de argumentos
- Inclui operações bloqueadas como regras comentadas para revisão
**Casos de uso:**
- **Bloqueio de CI/CD**: Perfilar uma execução de build/teste, bloquear execuções futuras para esse comportamento
- **Sandbox de agente**: Deixar um agente de IA executar uma tarefa, gerar política para execuções futuras
- **Perfil de contêiner**: Perfilar uma carga de trabalho, gerar política mínima para produção
---
## Acesso a Banco de Dados (PostgreSQL)
o agentsh inclui um **proxy PostgreSQL** embutido que torna o acesso ao banco de dados consciente do agente e governado por políticas. Ele fala o protocolo wire do Postgres, classifica cada declaração em uma lista de *efeitos* (leituras, escritas, DDL, DCL, controle de transação/sessão, `COPY`/exportação em massa, …) e avalia cada efeito em relação às `database_rules` antes de encaminhar upstream — então um `UPDATE`, `DROP`, ou `DELETE` sem escopo é governado da mesma forma que uma escrita de arquivo ou conexão de rede.
- **Avaliação por efeito e multi-objeto** — as regras são coletar-tudo / **qualquer-nega-vence** (o verbo mais restritivo decide), não primeira correspondência.
- **Decisões:** `allow`, `deny`, `approve` (OK humano), `audit` e `redirect` no nível da declaração.
- **Guarda `require_where`** — recusa `UPDATE`/`DELETE` de nível superior que não tenham cláusula `WHERE`.
- **Regras de nível de conexão** (`database_connection_rules`) controlam quais sessões podem alcançar qual `db_service` declarado.
- **Eventos de auditoria de autenticação + declaração** para cada conexão e consulta; o registro do texto da declaração é configurável (`policies.db.log_statements: none | parameters_redacted | full`).
A Fase 1 cobre o protocolo wire PostgreSQL v3 (dialetos: `postgres`, `aurora_postgres`; `redshift` / `cockroachdb` em beta). Conexões de replicação e criptografadas por GSSAPI têm negação padrão.```yaml
database_rules:
# normal reads + updates on the declared service
- name: app-read-and-update
db_service: appdb
operations: [READ, UPDATE]
decision: allow
# allow UPDATE/DELETE only when scoped by a WHERE clause
- name: app-guard-unscoped-dml
db_service: appdb
operations: [UPDATE, DELETE]
require_where: true
decision: allow
# block schema/DDL mutations; terminate the transaction on violation
- name: app-deny-ddl
db_service: appdb
operations: [CREATE, DROP, ALTER, EXPORT]
decision: deny
deny_mode_in_tx: terminate
message: "appdb is read+update only. Requested: {{.Operation}}"
See the Database Access Control spec for the full operation taxonomy, effects model, connection rules, and unavoidability threat model.
O agentsh pode redirecionar transparentemente conexões DNS e TCP, possibilitando casos de uso como rotear chamadas de API através de proxies corporativos ou trocar de provedores de IA sem alterações no código.
Intercepte a resolução de DNS e retorne endereços IP configurados:```yaml dns_redirect:
match: "api.anthropic.com" redirect_ip: "10.0.0.50" visibility: audit_only on_failure: fail_closed
match: ".*\.openai\.com" # Regex pattern redirect_ip: "10.0.0.51" visibility: warn
### Connect Redirect
Redirecione conexões TCP para destinos diferentes com manipulação TLS opcional:```yaml
connect_redirect:
- match: "api.anthropic.com:443"
redirect_to: "vertex-proxy.internal:8443"
tls_mode: passthrough # Forward encrypted traffic unchanged
visibility: silent
- match: "api.openai.com:443"
redirect_to: "azure-proxy.internal:443"
tls_mode: rewrite_sni # Modify SNI in TLS ClientHello
rewrite_sni: "azure-openai.example.com"
visibility: audit_only
agentsh intercepta sinais (kill, SIGTERM, etc.) enviados entre processos, fornecendo controle baseado em políticas sobre quais sinais podem atingir quais alvos.
signal_rules:
name: allow-self signals: ["@all"] target: type: self decision: allow
name: allow-children signals: ["@all"] target: type: children decision: allow
### Grupos de Sinais
- `@all` - Todos os sinais (1-31)
- `@fatal` - SIGKILL, SIGTERM, SIGQUIT, SIGABRT
- `@job` - SIGSTOP, SIGCONT, SIGTSTP, SIGTTIN, SIGTTOU
- `@reload` - SIGHUP, SIGUSR1, SIGUSR2
### Tipos de Alvo
- `self` - Processo sinalizando a si mesmo
- `children` - Processos filhos diretos
- `descendants` - Todos os processos descendentes
- `session` - Qualquer processo na sessão agentsh
- `external` - PIDs fora da sessão
- `system` - PID 1 e threads do kernel
Consulte a [Documentação de Políticas](https://github.com/canyonroad/agentsh/blob/HEAD/docs/operations/policies.md#signal-rules) para opções completas de configuração.
---
## Monitoramento de E/S de Arquivos no macOS
No macOS, o agentsh monitora E/S de arquivos usando o Endpoint Security Framework (ESF), inscrevendo-se em eventos AUTH e NOTIFY. As operações rastreadas incluem abrir, criar, excluir, renomear, escrever (detectado via close-modified) e, no macOS 26+, chmod e chown através de eventos de alteração de atributos. Cada evento de arquivo é atribuído à sessão e comando de origem através da resolução baseada em PID, fornecendo trilhas de auditoria completas entre árvores de subprocessos.
O ESF fornece imposição de permitir/negar no nível do kernel, mas não suporta interceptação transparente de arquivos como o FUSE do Linux. As ações de política que exigem interceptação -- como `redirect` (reescrita de caminho) e `soft_delete` (quarentena) -- são implementadas como negar + orientação: a operação é bloqueada no nível do ESF e o agente recebe instruções para tentar novamente com o caminho correto ou para reconhecer que o arquivo está protegido. Consulte o [documento de arquitetura ESF+NE do macOS](https://github.com/canyonroad/agentsh/blob/HEAD/docs/macos-esf-ne-architecture.md) para detalhes do fluxo de eventos e a [documentação de políticas](https://github.com/canyonroad/agentsh/blob/HEAD/docs/operations/policies.md#file-rule-actions-on-macos-esf) para o comportamento por ação.
---
## Pacotes de políticas iniciais
Você já tem uma política padrão (`configs/policies/default.yaml`). Esses pacotes opinativos estão disponíveis como arquivos separados para que as equipes possam escolher um:
* **[`policies/dev-safe.yaml`](https://github.com/canyonroad/agentsh/blob/HEAD/configs/policies/dev-safe.yaml)**: seguro para desenvolvimento local
* permitir leitura/gravação do workspace
* aprovar exclusões no workspace
* negar `~/.ssh/**`, `/root/.ssh/**`
* restringir rede a domínios/portas na lista de permissões
* **[`policies/ci-strict.yaml`](https://github.com/canyonroad/agentsh/blob/HEAD/configs/policies/ci-strict.yaml)**: seguro para runners de CI
* negar qualquer coisa fora do workspace
* negar rede de saída, exceto registros de artefatos
* negar shells interativos, a menos que explicitamente permitidos
* auditar tudo (eventos resumidos)
* **[`policies/agent-sandbox.yaml`](https://github.com/canyonroad/agentsh/blob/HEAD/configs/policies/agent-sandbox.yaml)**: modo 'agente executa código desconhecido'
* negar padrão + lista de permissões explícita
* aprovar qualquer acesso a credenciais/caminhos
* redirecionar uso de ferramentas de rede para proxies/mirrors internos
* soft-delete de operações destrutivas para fácil recuperação
---
## Exemplos de Integração com Assistente de IA
Trechos prontos para uso para configurar assistentes de codificação de IA para usar agentsh:
* **[Claude Code](https://github.com/canyonroad/agentsh/blob/HEAD/examples/claude/)** - Trecho CLAUDE.md para integração com Claude Code
* **[Cursor](https://github.com/canyonroad/agentsh/blob/HEAD/examples/cursor/)** - Regras do Cursor para integração com agentsh
* **[AGENTS.md](https://github.com/canyonroad/agentsh/blob/HEAD/examples/agents/)** - Trecho AGENTS.md genérico (funciona com múltiplas ferramentas de IA)
> **Nota:** Estes exemplos são para cenários de desenvolvimento local onde executar o agente de IA dentro de um contêiner não é prático. Para ambientes de produção ou CI/CD, prefira executar agentes em contêineres com o shell shim instalado—consulte [Uso no Docker](#use-in-docker-with-the-shell-shim).
---
## Referências
* **Demonstração de Proteção MCP:** [`agentsh-mcp-protection-demo`](https://github.com/canyonroad/agentsh-mcp-protection-demo) - demonstração ao vivo de detecção de exfiltração entre servidores, bloqueio de rug pull e geração de políticas
* **Segurança e modelo de ameaça:** [`SECURITY.md`](https://github.com/canyonroad/agentsh/blob/HEAD/SECURITY.md) - contra o que agentsh protege, limitações conhecidas, lista de verificação do operador
* **KMS Externo:** [`SECURITY.md#external-kms-integration`](https://github.com/canyonroad/agentsh/blob/HEAD/SECURITY.md#external-kms-integration) - AWS KMS, Azure Key Vault, HashiCorp Vault, GCP Cloud KMS para chaves de integridade de auditoria
* Modelo de configuração: [`configs/server-config.yaml`](https://github.com/canyonroad/agentsh/blob/HEAD/configs/server-config.yaml)
* Política padrão: [`configs/policies/default.yaml`](https://github.com/canyonroad/agentsh/blob/HEAD/configs/policies/default.yaml)
* Exemplo de Dockerfile (com shim): [`Dockerfile.example`](https://github.com/canyonroad/agentsh/blob/HEAD/Dockerfile.example)
* **Documentação de políticas:** [`docs/operations/policies.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/operations/policies.md) - variáveis de política, regras de sinal, redirecionamento de rede
* **Controle de acesso a banco de dados:** [`docs/agentsh-db-access-spec.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/agentsh-db-access-spec.md) - escopo de imposição de banco de dados apenas Postgres, semântica de política, comportamento de redirecionamento e roteiro
* **Livro de receitas de políticas de comando:** [`docs/cookbook/command-policies.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/cookbook/command-policies.md) - como permitir um novo binário, quando usar `wrap` em vez de `exec` e como depurar uma negação
* **Livro de receitas de serviços HTTP:** [`docs/cookbook/http-services.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/cookbook/http-services.md) - receitas para rotear chamadas de API HTTP de saída através de serviços declarados com regras e portão de aprovação
* **Livro de receitas de integrações de SDK de sandbox:** [`docs/cookbook/sandbox-sdk-integrations.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/cookbook/sandbox-sdk-integrations.md) - configuração `shim_install` para Tensorlake / E2B / Modal / Daytona onde os comandos são executados como irmãos do servidor agentsh
* **Habilidades de criação de políticas:** [`skills/`](https://github.com/canyonroad/agentsh/blob/HEAD/skills/) - habilidades de assistente de IA para criar e editar políticas no Claude Code, NanoClaw, etc.
* **Comparação de plataformas:** [`docs/platform-comparison.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/platform-comparison.md) - suporte a recursos, pontuações de segurança, desempenho por plataforma
* **Bubblewrap vs agentsh:** [`docs/bubblewrap-vs-agentsh-comparison.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/bubblewrap-vs-agentsh-comparison.md) - comparação com Bubblewrap para sandboxing de contêineres Linux
* **Controle de acesso a banco de dados:** [`docs/agentsh-db-access-spec.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/agentsh-db-access-spec.md) - taxonomia de proxy PostgreSQL, modelo de efeitos, `database_rules`, regras de conexão, modelo de ameaça
* **Modos de segurança e `detect`:** [`docs/security-modes.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/security-modes.md) - modos de imposição, pontuação de proteção e o que `agentsh detect` relata
* **seccomp:** [`docs/seccomp.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/seccomp.md) - filtragem de chamadas de sistema, interceptação de execve e bloqueio de famílias de sockets
* **Modo ptrace:** [`docs/ptrace-support.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/ptrace-support.md) - imposição PTRACE_SEIZE para contêineres restritos (`attach_mode`, pré-filtro seccomp)
* **eBPF:** [`docs/ebpf.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/ebpf.md) - rastreamento de rede e imposição de políticas via eBPF
* **Proxy LLM e DLP:** [`docs/llm-proxy.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/llm-proxy.md) - configuração de proxy embutido, padrões DLP, rastreamento de uso
* **Guia de compilação macOS:** [`docs/macos-build.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/macos-build.md) - instruções de compilação ESF+NE
* **Arquitetura ESF+NE macOS:** [`docs/macos-esf-ne-architecture.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/macos-esf-ne-architecture.md) - Extensão de Sistema, XPC e detalhes de implantação
* **Sandbox XPC macOS:** [`docs/macos-xpc-sandbox.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/macos-xpc-sandbox.md) - controle XPC/Mach IPC para processos em sandbox
* Variáveis de ambiente (todas as substituições `AGENTSH_*`, alternâncias de inicialização automática, seleção de transporte): [`docs/spec.md` §15.3 "Variáveis de Ambiente"](https://github.com/canyonroad/agentsh/blob/HEAD/docs/spec.md#153-environment-variables)
* Arquitetura e fluxo de dados (FUSE + motor de política + API): comentários inline em [`configs/server-config.yaml`](https://github.com/canyonroad/agentsh/blob/HEAD/configs/server-config.yaml) e [`internal/netmonitor`](https://github.com/canyonroad/agentsh/blob/HEAD/internal/netmonitor)
* Ajuda da CLI: `agentsh --help`, `agentsh exec --help`, `agentsh shim --help`
---
Criado com a ajuda de agentes para agentes.
sandbox.env_injectenv_injectconfig.yml e exemplos de política em configs/.| Campo | Valores | Descrição |
|---|
visibility | silent, audit_only, warn | Como os redirecionamentos são registrados/exibidos |
on_failure | fail_closed, fail_open, retry_original | O que acontece se o redirecionamento falhar |
tls_mode | passthrough, rewrite_sni | Manuseio TLS para redirecionamento de connect |
| Funcionalidade | Linux | macOS | Windows |
|---|
| Redirecionamento DNS | ✅ eBPF | ✅ pf/proxy | ✅ WinDivert |
| Redirecionamento de Conexão | ✅ eBPF | ✅ pf/proxy | ✅ WinDivert |
| Reescrita SNI | ✅ | ✅ | ✅ |
| Plataforma | Bloqueio | Redirecionamento | Auditoria |
|---|
| Linux | Sim (seccomp user-notify) | Sim | Sim |
| macOS | Não | Não | Sim (ES) |
| Windows | Parcial | Não | Sim (ETW) |