
Seguridad en la capa de ejecución (ELS) para agentes de IA — shell con aplicación de políticas y auditoría.
Nota para macOS: La aplicación nativa de enforcement en macOS mediante ESF (Endpoint Security Framework) + NE (Network Extension) está en Alpha. Funciona de extremo a extremo: los eventos de archivos, procesos y red fluyen a través de la extensión del sistema hasta el motor de políticas Go, pero espera bordes sin pulir y cambios que rompan compatibilidad entre versiones. Para uso en producción hoy, recomendamos Linux.
Nota para Windows: Estamos trabajando para que los controladores minifilter estén firmados. Hasta entonces, solo el modo WSL2 de Windows es totalmente compatible para uso en producción.
Puerta de enlace de ejecución segura y con políticas para agentes de IA.
agentsh se sitúa debajo de tu agente/herramienta: intercepta la actividad de archivos, red, procesos y señales (incluidos los árboles de subprocesos), aplica la política que definas y emite eventos de auditoría estructurados.
Nota de plataforma: Linux ofrece enforcement completo (100 % de puntuación de seguridad). macOS ESF+NE (90 %) está en Alpha: funcional pero no listo para producción. WSL2 de Windows ofrece enforcement completo equivalente a Linux (100 %); Windows nativo mediante controlador minifilter + AppContainer (85 %) está pendiente de la firma del controlador. Consulta la Matriz de comparación de plataformas para más detalles.
allow, deny, approve (aprobación humana), soft_delete o redirect.db_services declaradosLos flujos de trabajo de agentes tarde o temprano ejecutan código arbitrario (pip install, make test, python script.py). Los controles tradicionales de "pedir aprobación antes de ejecutar un comando" se detienen en el límite de la herramienta y no pueden ver lo que sucede dentro de ese comando.
agentsh aplica la política en tiempo de ejecución, de modo que el trabajo oculto realizado por los subprocesos también se gobierna, se registra y (cuando es necesario) se aprueba.
La mayoría de los sistemas pueden denegar una acción. agentsh también puede redirigirla.
Eso significa que cuando un agente intenta el enfoque incorrecto (o soluciones por fuerza bruta), la política puede guiarlo hacia el camino correcto intercambiando el comando y devolviendo orientación, manteniendo al agente en el camino pavimentado y reduciendo reintentos desperdiciados.
Ejemplo: redirigir curl a un wrapper auditado```yaml command_rules:
**Ejemplo: redirigir las escrituras fuera del workspace de vuelta al interior**```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"
El agente ve una operación exitosa (no un error), pero tú controlas dónde aterrizan realmente las cosas.
Los contenedores aíslan la superficie del host; agentsh añade visibilidad y política de ejecución dentro del contenedor.
macOS (Homebrew)```bash brew tap canyonroad/tap brew install --cask agentsh
Esto instala el paquete de la aplicación AgentSH con la extensión del sistema ESF+NE. Después de la instalación, se te pedirá que apruebes la extensión del sistema en **System Settings > General > Login Items & Extensions**.
**Linux (desde un lanzamiento de GitHub)**
Descarga el `.deb`, `.rpm` o `.apk` para tu plataforma desde la [página de lanzamientos](https://github.com/erans/agentsh/releases).```bash
# Example for Debian/Ubuntu
sudo dpkg -i agentsh_<VERSION>_linux_amd64.deb
Desde el código fuente (Linux)```bash make build sudo install -m 0755 bin/agentsh bin/agentsh-shell-shim /usr/local/bin
**Desde el código fuente (macOS)**```bash
# ESF+NE mode (full enforcement — Alpha, requires Xcode 15+)
make build-macos-enterprise
Consulta la Guía de compilación de macOS para obtener instrucciones detalladas de compilación en 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
---
### Comprueba qué se aplica realmente
`agentsh detect` sondea el host e informa qué primitivas de cumplimiento están realmente disponibles — seccomp, Landlock, FUSE, eBPF, ptrace, cgroups — agrupadas en puntuaciones de protección por dominio más el modo de seguridad seleccionado. En hosts restringidos (clase Daytona, E2B, Firecracker) donde el listener user-notify de seccomp no puede instalarse, informa del modo que se aplicará *efectivamente* en lugar de lo que el kernel meramente soporta.```bash
agentsh detect # human-readable protection report
agentsh detect config # emit a config tuned for this host
Consulta Modos de seguridad para la matriz de modos y los 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)---
### Autostart (sin paso manual de daemon)
**No** necesitas iniciar `agentsh server` tú mismo.
* El primer `agentsh exec` (o cualquier `/bin/sh`/`/bin/bash` con shim) lanzará automáticamente un servidor local usando `configs/server-config.yaml` (o `AGENTSH_CONFIG` si está definido).
* Ese servidor mantiene la capa FUSE y el motor de políticas activos durante la vida de la sesión; los comandos posteriores lo reutilizan.
* Establece `AGENTSH_NO_AUTO=1` si quieres gestionar manualmente el ciclo de vida del servidor.
---
## Uso en Docker (con el shim de shell)
Consulta `Dockerfile.example` para ver una imagen mínima basada en Debian.
Dentro de la imagen, instala un paquete de release (o copia tu compilación) y luego activa el shim:```bash
agentsh shim install-shell \
--root / \
--shim /usr/bin/agentsh-shell-shim \
--bash \
--i-understand-this-modifies-the-host
Apunta el shim a tu servidor (sidecar o host):```dockerfile ENV AGENTSH_SERVER=http://127.0.0.1:18080
Ahora cualquier `/bin/sh -c ...` o `/bin/bash -lc ...` en el contenedor se enruta a través de agentsh.
### Aplicación no interactiva
Por defecto, el shim omite la política cuando stdin no es una TTY (preservando datos binarios para comandos canalizados). En plataformas donde los comandos siempre son no interactivos pero aún necesitan aplicación (p. ej., exe.dev, APIs de sandbox), agregue `--force`:```bash
agentsh shim install-shell \
--root / \
--shim /usr/bin/agentsh-shell-shim \
--bash \
--force \
--i-understand-this-modifies-the-host
Esto escribe /etc/agentsh/shim.conf con force=true, que el shim lee al inicio. El archivo de configuración funciona independientemente de cómo se invoque el shell (a diferencia de las variables de entorno o los scripts de perfil). AGENTSH_SHIM_FORCE=1 en el entorno del proceso logra el mismo efecto por proceso.
Patrón recomendado: ejecutar agentsh como sidecar (o PID 1) en el mismo pod/servicio y compartir un volumen de trabajo; el shim garantiza que cada salto de shell permanezca bajo la política.
allowdenyapprove (aprobación humana)redirect (intercambiar un comando)audit (permitir + registrar)soft_delete (poner en cuarentena las eliminaciones con restauración)Las reglas viven en una política con nombre; las sesiones eligen una política.
Valores predeterminados:
configs/server-config.yamlconfigs/policies/default.yamlAGENTSH_POLICY_NAME a un nombre de política permitida (sin sufijo). Si no está definida, es inválida o no está permitida, se usa la predeterminada.policies.env_policy (allow/deny, max_bytes, max_keys, block_iteration) y anulaciones env_* por comando en los archivos de política. Una lista de permitidos vacía predetermina a PATH/LANG/TERM/HOME mínimos con una lista de denegación de secretos integrada; establezca block_iteration para ocultar la iteración del entorno (requiere el shim de entorno).policies.allowed en config.yml; vacía significa que solo se permite la predeterminada.policies.manifest_path a un manifiesto SHA256 para verificar los archivos de política al momento de la carga.env_allow, agentsh construye un entorno mínimo (PATH/LANG/TERM/HOME) y elimina las claves secretas integradas.env_allow/env_deny por comando, además de env_max_keys/env_max_bytes, limitan y filtran el entorno hijo al momento de ejecutar.env_block_iteration: true (global o por regla) oculta la enumeración del entorno; establezca policies.env_shim_path a libenvshim.so para que agentsh inyecte LD_PRELOAD + AGENTSH_ENV_BLOCK_ITERATION=1.BASH_ENV para deshabilitar builtins del shell que omiten seccomp. Configure en (global) o a nivel de política (anula la 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 una 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
agentsh admite múltiples métodos de autenticación:
| Tipo | Caso de uso |
|---|---|
api_key | Implementaciones simples con claves estáticas |
oidc | SSO empresarial (Okta, Azure AD, etc.) |
hybrid | Ambos métodos aceptados |
Modos de aprobación para verificación con intervención humana:
local_tty - Solicitud en terminal (predeterminado)totp - Códigos de aplicación de autenticaciónwebauthn - Claves de seguridad de hardware (YubiKey)api - Aprobación remota mediante RESTConsulta SECURITY.md para ver los detalles de configuración.
Consulta SECURITY.md para ver todas las opciones de configuración, o ejecuta la Demo de Protección MCP para ver estas detecciones en acción.
La forma más rápida de "entenderlo" es ejecutar algo que genere subprocesos y toque el sistema de archivos/red.```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
**Lo que verás en la salida JSON:**
- `exit_code`: el estado de salida del comando
- `stdout` / `stderr`: salida capturada
- `events[]`: cada operación de archivo/red/proceso con decisiones de política
- `policy.decision`: `allow`, `deny`, `approve` o `redirect`
Consejo: mantén una terminal con `--output json` abierta al probar políticas—hace que sea obvio qué se está tocando.
---
### Informes de sesión
Genera informes markdown que resumen la actividad de la sesión:```bash
# Quick summary
agentsh report latest --level=summary
# Detailed investigation
agentsh report <session-id> --level=detailed --output=report.md
Los informes incluyen:
Consulte la Guía de integración CI/CD para ver ejemplos de pipelines.
Cree instantáneas del estado del espacio de trabajo para recuperarse de operaciones destructivas:```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:** Cuando está habilitado, agentsh crea automáticamente puntos de control antes de comandos riesgosos (`rm`, `mv`, `git reset`, `git checkout`, etc.). Configúralo en `sessions.checkpoints.auto_checkpoint`.
Consulta [SECURITY.md](https://github.com/canyonroad/agentsh/blob/HEAD/SECURITY.md#checkpoint-and-rollback) para ver todas las opciones de configuración.
---
### Proxy LLM y DLP
agentsh incluye un proxy integrado que intercepta todas las solicitudes a la API de LLM de los agentes:```bash
# Check proxy status for a session
agentsh proxy status <session-id>
# View LLM-specific events
agentsh session logs <session-id> --type=llm
Características:
ANTHROPIC_BASE_URL y OPENAI_BASE_URL para que los SDK de agentes enruten a través del proxyConfiguración del proveedor:```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
**Configuración de DLP:**```yaml
dlp:
mode: redact
patterns:
email: true
api_keys: true
custom_patterns:
- name: customer_id
display: identifier
regex: "CUST-[0-9]{8}"
Consulte la Documentación del proxy LLM para conocer todas las opciones de configuración.
El mismo proxy también despacha las entradas http_services declaradas: upstreams de API con nombre y reglas por método y por ruta. Consulte Servicios HTTP declarados y el Cookbook de servicios HTTP para más detalles.
agentsh puede aplicar políticas sobre los servicios de base de datos declarados mediante db_services, database_connection_rules y database_rules. La implementación actual es solo para la familia Postgres: PostgreSQL es el destino compatible, con Aurora Postgres usando la misma ruta y Redshift/CockroachDB tratados como dialectos compatibles con Postgres con cobertura beta. MySQL, MongoDB, Snowflake, BigQuery, Databricks, ClickHouse, MSSQL, Cassandra, Redis y Oracle son elementos de la hoja de ruta, no compatibilidad de ejecución actual.
El soporte actual de Postgres incluye:
redirect seguro en tiempo de ejecución para el reemplazo de relaciones de Postgres de solo lectura.El runtime del proxy Postgres es código solo Linux dentro del proceso actualmente. Use Linux nativo, WSL2 o un entorno de VM Linux para la aplicación de políticas de base de datos.
Consulte Control de acceso a bases de datos y Documentación de políticas.
Genere políticas restrictivas a partir del comportamiento observado de la sesión (flujo de trabajo «profile-then-lock»):```bash
agentsh policy generate latest --output=ci-policy.yaml
agentsh policy generate abc123 --name=production-build --threshold=10
agentsh policy generate latest
La política generada:
- Solo permite las operaciones observadas durante la sesión
- Agrupa rutas en globs cuando hay muchos archivos en el mismo directorio
- Colapsa subdominios en comodines (p. ej., `*.github.com`)
- Marca comandos riesgosos (curl, wget, rm) con patrones de argumentos
- Incluye operaciones bloqueadas como reglas comentadas para su revisión
**Casos de uso:**
- **Bloqueo en CI/CD**: Perfila una ejecución de build/test, bloquea futuras ejecuciones a ese comportamiento
- **Aislamiento de agentes**: Deja que un agente de IA ejecute una tarea, genera una política para futuras ejecuciones
- **Perfilado de contenedores**: Perfila una carga de trabajo, genera una política mínima para producción
---
## Acceso a bases de datos (PostgreSQL)
agentsh incluye un **proxy PostgreSQL** integrado que hace que el acceso a bases de datos sea consciente del agente y esté gobernado por políticas. Habla el protocolo de cable de Postgres, clasifica cada sentencia en una lista de *efectos* (lecturas, escrituras, DDL, DCL, control de transacciones/sesiones, `COPY`/exportación masiva, …) y evalúa cada efecto contra `database_rules` antes de reenviarlo al upstream — de modo que un `UPDATE`, `DROP` o `DELETE` sin ámbito se gobierna igual que una escritura de archivo o una conexión de red.
- **Evaluación por efecto y multiobjeto** — las reglas son acumulativas / **gana cualquier denegación** (el verbo más restrictivo decide), no la primera coincidencia.
- **Decisiones:** `allow`, `deny`, `approve` (aprobación humana), `audit` y `redirect` a nivel de sentencia.
- **Guardia `require_where`** — rechaza `UPDATE`/`DELETE` de nivel superior que carezcan de una cláusula `WHERE`.
- **Reglas a nivel de conexión** (`database_connection_rules`) controlan qué sesiones pueden alcanzar qué `db_service` declarado.
- **Eventos de auditoría de autenticación y sentencias** para cada conexión y consulta; el registro del texto de las sentencias es configurable (`policies.db.log_statements: none | parameters_redacted | full`).
La Fase 1 cubre el protocolo de cable v3 de PostgreSQL (dialectos: `postgres`, `aurora_postgres`; `redshift` / `cockroachdb` en beta). Las conexiones de replicación y cifradas con GSSAPI se deniegan por defecto.```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}}"
Consulta la especificación de Control de Acceso a la Base de Datos para ver la taxonomía completa de operaciones, el modelo de efectos, las reglas de conexión y el modelo de amenazas de inevitabilidad.
agentsh puede redirigir de forma transparente conexiones DNS y TCP, lo que permite casos de uso como enrutar llamadas a APIs a través de proxies corporativos o cambiar de proveedor de IA sin modificar el código.
Intercepta la resolución DNS y devuelve direcciones IP configuradas:```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
### Redirección de conexión
Redirige conexiones TCP a diferentes destinos con manejo opcional de TLS:```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 señales (kill, SIGTERM, etc.) enviadas entre procesos, proporcionando control basado en políticas sobre qué señales pueden llegar a qué destinos.
signal_rules:
name: allow-self signals: ["@all"] target: type: self decision: allow
name: allow-children signals: ["@all"] target: type: children decision: allow
### Grupos de señales
- `@all` - Todas las señales (1-31)
- `@fatal` - SIGKILL, SIGTERM, SIGQUIT, SIGABRT
- `@job` - SIGSTOP, SIGCONT, SIGTSTP, SIGTTIN, SIGTTOU
- `@reload` - SIGHUP, SIGUSR1, SIGUSR2
### Tipos de destino
- `self` - Proceso que se envía señales a sí mismo
- `children` - Procesos hijo directos
- `descendants` - Todos los procesos descendientes
- `session` - Cualquier proceso en la sesión de agentsh
- `external` - PIDs fuera de la sesión
- `system` - PID 1 y subprocesos del kernel
Consulta la [Documentación de políticas](https://github.com/canyonroad/agentsh/blob/HEAD/docs/operations/policies.md#signal-rules) para ver todas las opciones de configuración.
---
## Supervisión de E/S de archivos en macOS
En macOS, agentsh supervisa la E/S de archivos mediante el Endpoint Security Framework (ESF), suscribiéndose tanto a eventos AUTH como NOTIFY. Las operaciones rastreadas incluyen apertura, creación, eliminación, renombrado y escritura de archivos (detectada a través de close-modified) y, en macOS 26+, chmod y chown mediante eventos de cambio de atributos. Cada evento de archivo se atribuye a la sesión y al comando de origen mediante la resolución basada en PID, lo que proporciona pistas de auditoría completas en todos los árboles de subprocesos.
ESF proporciona aplicación de permisos/denegaciones a nivel de kernel, pero no admite la interceptación transparente de archivos como Linux FUSE. Las acciones de política que requieren interceptación -- como `redirect` (reescritura de rutas) y `soft_delete` (cuarentena) -- se implementan como denegación + orientación: la operación se bloquea a nivel de ESF y el agente recibe instrucciones para reintentar con la ruta correcta o para reconocer que el archivo está protegido. Consulta el [documento de arquitectura macOS ESF+NE](https://github.com/canyonroad/agentsh/blob/HEAD/docs/macos-esf-ne-architecture.md) para obtener detalles sobre el flujo de eventos y la [documentación de políticas](https://github.com/canyonroad/agentsh/blob/HEAD/docs/operations/policies.md#file-rule-actions-on-macos-esf) para conocer el comportamiento de cada acción.
---
## Paquetes de políticas iniciales
Ya tienes una política predeterminada (`configs/policies/default.yaml`). Estos paquetes con criterios definidos están disponibles como archivos separados para que los equipos puedan elegir uno:
* **[`policies/dev-safe.yaml`](https://github.com/canyonroad/agentsh/blob/HEAD/configs/policies/dev-safe.yaml)**: seguro para el desarrollo local
* permitir lectura/escritura en el espacio de trabajo
* aprobar eliminaciones en el espacio de trabajo
* denegar `~/.ssh/**`, `/root/.ssh/**`
* restringir la red a dominios/puertos permitidos
* **[`policies/ci-strict.yaml`](https://github.com/canyonroad/agentsh/blob/HEAD/configs/policies/ci-strict.yaml)**: seguro para runners de CI
* denegar cualquier cosa fuera del espacio de trabajo
* denegar tráfico de red saliente excepto a los registros de artefactos
* denegar shells interactivos a menos que se permitan explícitamente
* auditar todo (eventos resumidos)
* **[`policies/agent-sandbox.yaml`](https://github.com/canyonroad/agentsh/blob/HEAD/configs/policies/agent-sandbox.yaml)**: modo "el agente ejecuta código desconocido"
* denegación predeterminada + lista de permitidos explícita
* aprobar cualquier acceso a credenciales/rutas
* redirigir el uso de herramientas de red a proxies/duplicados internos
* aplicar soft-delete a operaciones destructivas para facilitar la recuperación
---
## Ejemplos de integración con asistentes de IA
Fragmentos listos para usar para configurar asistentes de codificación de IA para que utilicen agentsh:
* **[Claude Code](https://github.com/canyonroad/agentsh/blob/HEAD/examples/claude/)** - fragmento de CLAUDE.md para la integración con Claude Code
* **[Cursor](https://github.com/canyonroad/agentsh/blob/HEAD/examples/cursor/)** - reglas de Cursor para la integración con agentsh
* **[AGENTS.md](https://github.com/canyonroad/agentsh/blob/HEAD/examples/agents/)** - fragmento genérico de AGENTS.md (funciona con múltiples herramientas de IA)
> **Nota:** Estos ejemplos son para escenarios de desarrollo local donde ejecutar el agente de IA dentro de un contenedor no es práctico. Para entornos de producción o CI/CD, prefiere ejecutar agentes en contenedores con el shim de shell instalado; consulta [Uso en Docker](#use-in-docker-with-the-shell-shim).
---
## Referencias
* **Demostración de protección MCP:** [`agentsh-mcp-protection-demo`](https://github.com/canyonroad/agentsh-mcp-protection-demo) - demo en vivo de detección de exfiltración entre servidores, bloqueo de rug pulls y generación de políticas
* **Modelo de seguridad y amenazas:** [`SECURITY.md`](https://github.com/canyonroad/agentsh/blob/HEAD/SECURITY.md) - contra qué protege agentsh, limitaciones conocidas, lista de verificación para operadores
* **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 claves de integridad de auditoría
* Plantilla de configuración: [`configs/server-config.yaml`](https://github.com/canyonroad/agentsh/blob/HEAD/configs/server-config.yaml)
* Política predeterminada: [`configs/policies/default.yaml`](https://github.com/canyonroad/agentsh/blob/HEAD/configs/policies/default.yaml)
* Dockerfile de ejemplo (con shim): [`Dockerfile.example`](https://github.com/canyonroad/agentsh/blob/HEAD/Dockerfile.example)
* **Documentación de políticas:** [`docs/operations/policies.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/operations/policies.md) - variables de política, reglas de señales, redirección de red
* **Control de acceso a bases de datos:** [`docs/agentsh-db-access-spec.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/agentsh-db-access-spec.md) - alcance de aplicación de bases de datos solo Postgres, semántica de políticas, comportamiento de redirección y hoja de ruta
* **Recetario de políticas de comandos:** [`docs/cookbook/command-policies.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/cookbook/command-policies.md) - cómo permitir un nuevo binario, cuándo usar `wrap` en lugar de `exec` y cómo depurar una denegación
* **Recetario de servicios HTTP:** [`docs/cookbook/http-services.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/cookbook/http-services.md) - recetas para enrutar llamadas HTTP API salientes a través de servicios declarados con reglas y aprobaciones
* **Recetario de integraciones con SDK de sandbox:** [`docs/cookbook/sandbox-sdk-integrations.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/cookbook/sandbox-sdk-integrations.md) - configuración `shim_install` para Tensorlake / E2B / Modal / Daytona donde los comandos se ejecutan como procesos hermanos del servidor agentsh
* **Habilidades para redactar políticas:** [`skills/`](https://github.com/canyonroad/agentsh/blob/HEAD/skills/) - habilidades para asistentes de IA para crear y editar políticas en Claude Code, NanoClaw, etc.
* **Comparación de plataformas:** [`docs/platform-comparison.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/platform-comparison.md) - soporte de funciones, puntuaciones de seguridad, rendimiento por plataforma
* **Bubblewrap vs agentsh:** [`docs/bubblewrap-vs-agentsh-comparison.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/bubblewrap-vs-agentsh-comparison.md) - comparación con Bubblewrap para el sandboxing de contenedores Linux
* **Control de acceso a bases de datos:** [`docs/agentsh-db-access-spec.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/agentsh-db-access-spec.md) - taxonomía de proxy PostgreSQL, modelo de efectos, `database_rules`, reglas de conexión, modelo de amenazas
* **Modos de seguridad y `detect`:** [`docs/security-modes.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/security-modes.md) - modos de aplicación, puntuación de protección y qué informa `agentsh detect`
* **seccomp:** [`docs/seccomp.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/seccomp.md) - filtrado de llamadas al sistema, interceptación de execve y bloqueo de familias de sockets
* **Modo ptrace:** [`docs/ptrace-support.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/ptrace-support.md) - aplicación de PTRACE_SEIZE para contenedores restringidos (`attach_mode`, prefiltro seccomp)
* **eBPF:** [`docs/ebpf.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/ebpf.md) - rastreo de red y aplicación de políticas con eBPF
* **Proxy LLM y DLP:** [`docs/llm-proxy.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/llm-proxy.md) - configuración de proxy integrado, patrones DLP, seguimiento de uso
* **Guía de compilación para macOS:** [`docs/macos-build.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/macos-build.md) - instrucciones de compilación de ESF+NE
* **Arquitectura macOS ESF+NE:** [`docs/macos-esf-ne-architecture.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/macos-esf-ne-architecture.md) - detalles de System Extension, XPC e implementación
* **Sandbox XPC de macOS:** [`docs/macos-xpc-sandbox.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/macos-xpc-sandbox.md) - control de XPC/IPC Mach para procesos en sandbox
* Variables de entorno (todos los override `AGENTSH_*`, conmutadores de inicio automático, selección de transporte): [`docs/spec.md` §15.3 "Variables de entorno"](https://github.com/canyonroad/agentsh/blob/HEAD/docs/spec.md#153-environment-variables)
* Arquitectura y flujo de datos (FUSE + motor de políticas + API): comentarios en línea en [`configs/server-config.yaml`](https://github.com/canyonroad/agentsh/blob/HEAD/configs/server-config.yaml) y [`internal/netmonitor`](https://github.com/canyonroad/agentsh/blob/HEAD/internal/netmonitor)
* Ayuda de CLI: `agentsh --help`, `agentsh exec --help`, `agentsh shim --help`
---
Creado con la ayuda de agentes para agentes.
sandbox.env_injectenv_injectconfig.yml y las muestras de políticas en configs/.| Campo | Valores | Descripción |
|---|
visibility | silent, audit_only, warn | Cómo se registran/muestran las redirecciones |
on_failure | fail_closed, fail_open, retry_original | Qué sucede si falla la redirección |
tls_mode | passthrough, rewrite_sni | Manejo de TLS para la redirección de connect |
| Característica | Linux | macOS | Windows |
|---|
| Redirección DNS | ✅ eBPF | ✅ pf/proxy | ✅ WinDivert |
| Redirección de Connect | ✅ eBPF | ✅ pf/proxy | ✅ WinDivert |
| Reescritura SNI | ✅ | ✅ | ✅ |
| Plataforma | Bloqueo | Redirección | Auditoría |
|---|
| Linux | Sí (seccomp user-notify) | Sí | Sí |
| macOS | No | No | Sí (ES) |
| Windows | Parcial | No | Sí (ETW) |