Ir al contenido
Mastering Claude

Inicio / Fundamentos y bucle del agente

Fundamentos y bucle del agente8 minFondation

Ejecutar comandos de shell

La herramienta Bash ejecuta comandos reales en tu equipo, Claude lee la salida realmente producida para continuar su razonamiento, y aparece un aviso de permiso antes de cada comando nuevo.

La herramienta Bash ejecuta un comando de shell real en tu equipo, no una simulación. Claude Code lee después la salida estándar y la salida de error de ese comando para continuar su razonamiento a partir de lo que realmente se produjo, y no de lo que se esperaba.

Un aviso antes de cada comando nuevo

Antes de que se ejecute un comando de shell nuevo, aparece en pantalla un aviso de permiso. La documentación oficial describe este comportamiento para los comandos de shell como una confirmación solicitada cada vez, salvo para un conjunto integrado de comandos de solo lectura que se ejecutan directamente. Responder con la opción que memoriza la elección hace que ese comando preciso quede aprobado de forma permanente, pero solo para el repositorio en curso y para ese comando preciso: no es una autorización general que se extendiera a cualquier comando de shell futuro.

El patrón global que reactiva el aviso

Un comando ya aprobado puede, a pesar de todo, volver a disparar el aviso. Cuando un patrón global sin proteger figura en los argumentos de un comando con banderas capaces de escribir o ejecutar, por ejemplo find, sort, sed o git, el aviso reaparece aunque el comando base ya figure en la lista de comandos de confianza. La razón es concreta: ese patrón podría desarrollarse, en el momento de la ejecución, en una bandera destructiva que nadie había aprobado. Esta salvaguarda no es un defecto, es una protección colocada por encima de la propia lista de confianza.

Aquí tienes un ejemplo autónomo, que fabrica su propio archivo antes de leerlo, en lugar de inspeccionar un archivo real del proyecto:

mkdir -p /tmp/demo-bash
echo "erreur : connexion refusée" > /tmp/demo-bash/journal.txt
grep "erreur" /tmp/demo-bash/journal.txt

La última línea devuelve el contenido encontrado, erreur : connexion refusée. Es exactamente lo que Claude recibe de vuelta al llamar a la herramienta Bash, la salida bruta del comando, nada reconstruido y nada supuesto.

Esta lectura de la salida real antes de continuar es lo que hace funcionar el bucle de agente: pensar, llamar a una herramienta, observar lo que realmente devuelve, volver a empezar. El mismo principio de aprobación caso por caso se encuentra en la lectura de un diff de modificación de archivo, donde solo cambia el tipo de acción.

Figure 1

Del comando propuesto a la continuación del razonamiento

01
Claude propone un comando
La herramienta Bash recibe el comando de shell elegido para responder a la solicitud en curso.
02
Aparece un aviso de permiso
Salvo para un conjunto integrado de comandos de solo lectura, que se ejecutan directamente sin detenerse.
03
Tú apruebas o rechazas
La opción que memoriza la elección deja el comando aprobado de forma permanente para ese repositorio y ese comando.
04
El comando se ejecuta
El shell corre realmente en el equipo, con sus efectos reales sobre los archivos y los procesos.
05
Claude lee stdout y stderr
La salida estándar y la salida de error se leen tal cual, sin reconstrucción.
06
El razonamiento continúa
El resto del bucle de agente se apoya en lo que el comando realmente produjo.
La secuencia muestra los seis pasos de una llamada a la herramienta Bash, desde el comando propuesto por Claude hasta la reanudación del razonamiento sobre la salida realmente obtenida.
Figure 2

El aviso reaparece incluso en un comando ya aprobado

Dos comandos enviados a la herramienta Bash en un repositorio donde npm test ya está aprobadoAviso mostrado la primera vezAviso mostrado las veces siguientes
npm test, comando simple ya aprobadoNo, se ejecuta directamente
find con un patrón global sin proteger en sus argumentosSí, el aviso reaparece cada vez
La tabla compara dos comandos enviados a la herramienta Bash en un repositorio donde un comando simple ya está aprobado, según si un patrón global sin proteger figura o no en los argumentos de un comando capaz de escribir.
Calíbralo tú mismo

Un desarrollador le pide a Claude Code que cuente las líneas de un archivo de configuración. Claude propone el comando wc -l config.yaml. Aparece en pantalla un aviso de permiso, con la opción que memoriza la aprobación para ese repositorio y ese comando.

Escribe en una frase lo que esta situación establece, y en una frase lo que no establece.

Lo que hay que recordar
  • La herramienta Bash ejecuta un comando de shell real en el equipo, y Claude lee su salida estándar y su salida de error para continuar su razonamiento.
  • Aparece un aviso de permiso antes de cada comando nuevo, salvo para un conjunto integrado de comandos de solo lectura que se ejecutan directamente.
  • Aprobar un comando con la opción que memoriza la elección lo vuelve permanente, pero solo para ese repositorio y ese comando preciso.
  • Un patrón global sin proteger presente en los argumentos de un comando con banderas capaces de escribir, como find, sort, sed o git, siempre vuelve a disparar un aviso incluso en un comando ya incluido en la lista de confianza.
Hazlo ahora

En tu propia terminal, pídele a Claude Code que ejecute un comando de shell inofensivo como date o pwd, lee el aviso de permiso que aparece antes de aprobar, y luego observa la salida que Claude lee de vuelta antes de continuar.

Verificar en la fuente

Cada afirmación datable de esta lección remite aquí al texto público que la respalda. Una fuente que no se abre no prueba nada.