
sandbox-runtime v0.0.67
Una herramienta ligera de sandboxing para imponer restricciones de sistema de archivos y red en procesos arbitrarios a nivel del sistema operativo, sin requerir un contenedor.
Anthropic Sandbox Runtime (srt)
Una herramienta ligera de sandboxing para aplicar restricciones de sistema de archivos y red a procesos arbitrarios a nivel del sistema operativo, sin necesidad de un contenedor.
srt utiliza primitivas nativas de sandboxing del sistema operativo (sandbox-exec en macOS, bubblewrap en Linux) y filtrado de red basado en proxy. Puede usarse para aplicar sandboxing al comportamiento de agentes, servidores MCP locales, comandos bash y procesos arbitrarios.
Vista previa de investigación Beta
El Sandbox Runtime es una vista previa de investigación desarrollada para Claude Code con el fin de habilitar agentes de IA más seguros. Se pone a disposición como una vista previa temprana de código abierto para ayudar al ecosistema en general a construir sistemas agénticos más seguros. Dado que se trata de una vista previa de investigación temprana, las APIs y los formatos de configuración pueden evolucionar. ¡Agradecemos los comentarios y las contribuciones para hacer que los agentes de IA sean más seguros por defecto!
Instalación```bash
npm install -g @anthropic-ai/sandbox-runtime
## Uso básico```bash
# Network restrictions
$ srt "curl anthropic.com"
Running: curl anthropic.com
<html>...</html> # Request succeeds
$ srt "curl example.com"
Running: curl example.com
Connection blocked by network allowlist # Request blocked
# Filesystem restrictions
$ srt "cat README.md"
Running: cat README.md
# Anthropic Sandb... # Current directory access allowed
$ srt "cat ~/.ssh/id_rsa"
Running: cat ~/.ssh/id_rsa
cat: /Users/ollie/.ssh/id_rsa: Operation not permitted # Specific file blocked
Descripción general
Este paquete proporciona una implementación de sandbox independiente que puede usarse tanto como herramienta CLI como biblioteca. Está diseñado con una filosofía segura por defecto adaptada a los casos de uso comunes de los desarrolladores: los procesos se inician con acceso mínimo, y tú abres explícitamente solo los agujeros que necesitas.
Capacidades clave:
- Restricciones de red: Controla qué hosts/dominios pueden ser accedidos vía HTTP/HTTPS y otros protocolos
- Restricciones del sistema de archivos: Controla qué archivos/directorios pueden ser leídos/escritos
- Restricciones de sockets Unix: Controla el acceso a sockets IPC locales
- Monitoreo de violaciones: En macOS, accede al almacén de registros de violaciones del sandbox del sistema para alertas en tiempo real
Caso de uso de ejemplo: Sandboxing de servidores MCP
Un caso de uso clave es el sandboxing de servidores Model Context Protocol (MCP) para restringir sus capacidades. Por ejemplo, para hacer sandbox del servidor MCP de sistema de archivos:
Sin sandboxing (.mcp.json):```json
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem"]
}
}
}
**Con sandboxing** (`.mcp.json`):```json
{
"mcpServers": {
"filesystem": {
"command": "srt",
"args": ["npx", "-y", "@modelcontextprotocol/server-filesystem"]
}
}
}
Luego configure las restricciones en ~/.srt-settings.json:```json
{
"filesystem": {
"denyRead": [],
"allowWrite": ["."],
"denyWrite": ["~/sensitive-folder"]
},
"network": {
"allowedDomains": [],
"deniedDomains": []
}
}
Ahora el servidor MCP tendrá bloqueado el acceso de escritura a la ruta denegada:```
> Write a file to ~/sensitive-folder
✗ Error: EPERM: operation not permitted, open '/Users/ollie/sensitive-folder/test.txt'
Cómo funciona
El sandbox utiliza primitivas a nivel de sistema operativo para aplicar restricciones que se aplican a todo el árbol de procesos:
- macOS: Utiliza
sandbox-execcon perfiles Seatbelt generados dinámicamente - Linux: Utiliza bubblewrap para la contenedorización con aislamiento del espacio de nombres de red
- Windows: Ejecuta el proceso en sandbox bajo una cuenta de usuario local dedicada
srt-sandbox, con una barrera de egreso de Windows Filtering Platform vinculada al SID de esa cuenta y ACEs explícitos por sesión en el árbol de trabajo
0d1c612947c798aef48e6ab4beb7e8544da9d41a-4096x2305
Modelo de doble aislamiento
Tanto el aislamiento del sistema de archivos como el de red son necesarios para un sandboxing efectivo. Sin aislamiento de archivos, un proceso comprometido podría exfiltrar claves SSH u otros archivos sensibles. Sin aislamiento de red, un proceso podría escapar del sandbox y obtener acceso de red sin restricciones.
Aislamiento del sistema de archivos aplica restricciones de lectura y escritura:
- Lectura (patrón denegar-luego-permitir): Por defecto, el acceso de lectura está permitido en todas partes. Puedes denegar regiones amplias (p. ej.,
/Users) y luego volver a permitir rutas específicas dentro de ellas (p. ej.,.).allowReadtiene precedencia sobredenyRead— lo opuesto a la escritura, dondedenyWritetiene precedencia sobreallowWrite. Una entradadenyReadque es más específica que la regiónallowReaden la que se encuentra (p. ej.denyRead: ["**/.env"]o["./secrets"]conallowRead: ["."]) permanece denegada. - Escritura (patrón solo-permitir): Por defecto, el acceso de escritura está denegado en todas partes. Debes permitir rutas explícitamente (p. ej.,
.,/tmp). Una lista de permisos vacía significa que no hay acceso de escritura.
Aislamiento de red (patrón solo-permitir): Por defecto, todo acceso de red está denegado. Debes permitir dominios explícitamente. Una lista allowedDomains vacía significa que no hay acceso de red. El tráfico de red se enruta a través de servidores proxy que se ejecutan en el host:
-
Linux: Las solicitudes se enrutan a través del sistema de archivos mediante un socket de dominio Unix. El espacio de nombres de red del proceso en sandbox se elimina por completo, por lo que todo el tráfico de red debe pasar por los proxies que se ejecutan en el host (escuchando en sockets Unix que se montan mediante bind en el sandbox)
-
macOS: El perfil Seatbelt permite la comunicación solo a un puerto específico de localhost. Los proxies escuchan en este puerto, creando un canal controlado para todo el acceso de red
-
Windows: Un conjunto de filtros WFP a nivel de máquina bloquea todas las conexiones salientes que se originan desde la cuenta
srt-sandbox, excepto loopback al rango de puertos del proxy. Los proxies escuchan dentro de ese rango, creando un canal controlado para todo el acceso de red
Tanto HTTP/HTTPS (a través del proxy HTTP) como otro tráfico TCP (a través del proxy SOCKS5) son mediados por estos proxies, que aplican tus listas de dominios permitidos y denegados.
Para obtener más detalles sobre el sandboxing en Claude Code, consulta: