Visión general de la seguridad
Un agente actúa a través de herramientas, así que las salvaguardas del kit están en las herramientas: cuáles existen, cuáles están aprobadas y qué puede tocar cada llamada. Se aplican en las opciones del SDK y en hooks PreToolUse, que se ejecutan antes de cada llamada a una herramienta, tanto del agente principal como de sus subagentes. El modelo no puede convencer a un hook para que no deniegue; a una línea del prompt, sí.
| Salvaguarda | Protege contra | Dónde | Página |
|---|---|---|---|
| Conjunto mínimo de herramientas | que el modelo use herramientas que no le corresponden al agente (la CLI tiene docenas) | tools / allowedTools | Opciones de la sesión |
disallowedTools | una herramienta concreta, incluida una peligrosa de un servidor MCP | el SDK, antes que cualquier otra cosa | AgentSpec |
| Ámbito de ficheros | escrituras fuera de las carpetas del agente, ediciones de originales, búsquedas por todo el proyecto, lectura de ficheros protegidos | hook PreToolUse | Ámbito de ficheros |
| Puerta de tipo de subagente | el subagente integrado general-purpose del SDK, que hereda todas las herramientas | hook PreToolUse | Puertas de subagentes |
| Puerta de Bash de subagentes | que el agente principal ejecute comandos de shell | hook PreToolUse | Puertas de subagentes |
| Puerta de primer plano de subagentes | subagentes lanzados en segundo plano y perdidos sin aviso | hook PreToolUse | Puertas de subagentes |
| Aprobación MCP | nada: aprueba cada llamada mcp__* para que funcionen los servidores del proyecto | canUseTool | Permisos y aislamiento |
| Fuentes de configuración, auto-memoria, contexto de git | que la configuración personal de Claude Code de quien lo ejecuta se filtre al agente | opciones del SDK | Permisos y aislamiento |
| Puerta de pasos, aprobaciones | acciones que una persona debería ver antes | hook y herramienta | La persona en el bucle |
| Puerta del plan | cambios mientras el agente solo debe planificar | hook PreToolUse | Modos |
| Secretos ocultos en la transcripción | secretos escritos en los logs | hook PreToolUse/PostToolUse | Transcripción |
| Extensiones instaladas aparte | que el servidor de una extensión instalada vea las credenciales del agente, o que sus ficheros cambien tras instalarla | el lanzador, el hash del lock | Extensiones |
| Confianza en el workspace | que un workspace clonado o compartido ejecute el código de sus extensiones sin que la persona lo acepte | el .trust.json del agente, fuera del proyecto | Las extensiones de un workspace |
Lo que el kit no protege
- Bash. Un subagente con
Bashpuede llegar a cualquier ruta y ejecutar cualquier comando que pueda el usuario. El ámbito de ficheros no se le aplica. Haz que Bash sea opcional y explícito, y prefiere una herramienta dedicada. - Tus herramientas MCP. Una herramienta que registras se ejecuta con los permisos de tu proceso. Valida sus entradas, y pon las destructivas detrás de una aprobación o en
disallowedTools. - El contenido web.
WebFetchyWebSearchmeten texto no confiable en el contexto (inyección de prompts). Las salvaguardas de arriba limitan lo que una instrucción inyectada puede hacer que haga el agente; no impiden que el agente la lea. - Las carpetas de las ejecuciones. Guardan conversaciones enteras y resultados de herramientas, sin ocultar los secretos. Mantenlas fuera del control de versiones y de las carpetas compartidas.
- Los prompts. "Nunca hagas X" en un prompt es una petición. Todo lo que nunca deba ocurrir va en
disallowedToolso en un hook.
Una lista de comprobación para un agente nuevo
- Dale las carpetas más estrechas: la de la extensión
knowledgepara las notas, la de la extensiónsourcespara los originales, nada más salvo que haga falta. - Dale solo las carpetas que debe leer (la carpeta de fuentes,
extraReadableDirs): no lee nada más. Pon cada fichero secreto que haya dentro endeniedPathsy cada valor secreto ensecrets. - Prohíbe todas las herramientas que no quieras, sobre todo las de servidores MCP de terceros.
- Prefiere herramientas pequeñas a Bash; si un subagente de verdad necesita Bash, que sea opcional y explícito.
- Arranca los agentes nuevos en modo
interactiveoguided. - Deja
settingSourcesen su valor por defecto (["project"]) o más restringido. - Añade
.envy tu carpeta de ejecuciones a.gitignore.