154 Qué persiste entre comandos154 Qué persiste entre comandos
155</h3>155</h3>
156 156
157* Cuando Claude ejecuta `cd` en la sesión principal, el nuevo directorio de trabajo se mantiene en comandos Bash posteriores siempre que permanezca dentro del directorio del proyecto o un [directorio de trabajo adicional](/docs/es/permissions#working-directories) que agregó con `--add-dir`, `/add-dir`, o `additionalDirectories` en la configuración. Esto incluye comandos que Claude ejecuta en respuesta a sus mensajes posteriores.157* Cuando Claude ejecuta `cd` en la sesión principal, el nuevo directorio de trabajo se mantiene en los comandos Bash posteriores siempre que permanezca dentro del directorio del proyecto o un [directorio de trabajo adicional](/docs/es/permissions#working-directories) que agregó con `--add-dir`, `/add-dir`, o `additionalDirectories` en la configuración. Esto incluye comandos que Claude ejecuta en respuesta a sus mensajes posteriores.
158 * Las sesiones de subagentes nunca mantienen cambios de directorio de trabajo.158 * Las sesiones de subagentes nunca mantienen cambios de directorio de trabajo.
159 * Si `cd` sale de esos directorios, Claude Code se reinicia al directorio del proyecto y añade `Shell cwd was reset to <dir>` al resultado de la herramienta.159 * Si `cd` sale de esos directorios, Claude Code se reinicia al directorio del proyecto y añade `Shell cwd was reset to <dir>` al resultado de la herramienta.
160 * Para desactivar este mantenimiento de modo que cada comando Bash comience en el directorio del proyecto, establezca `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1`.160 * Para desactivar este mantenimiento de modo que cada comando Bash comience en el directorio del proyecto, establezca `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1`.
161* Las variables de entorno no persisten. Un `export` en un comando no estará disponible en el siguiente.161* Las variables de entorno no persisten. Un `export` en un comando no estará disponible en el siguiente.
162* Los alias y funciones de shell definidos en su archivo de inicio de shell están disponibles. Al iniciar la sesión, Claude Code obtiene `~/.zshrc`, `~/.bashrc`, o `~/.profile` según su shell, captura los alias, funciones y opciones de shell resultantes, y los aplica a cada comando Bash.162* Los alias y funciones de shell definidos en su archivo de inicio de shell están disponibles. Al inicio de la sesión, Claude Code obtiene `~/.zshrc`, `~/.bashrc`, o `~/.profile` dependiendo de su shell, captura los alias, funciones y opciones de shell resultantes, y los aplica a cada comando Bash.
163 163
164Active su virtualenv o entorno conda antes de lanzar Claude Code. Para hacer que las variables de entorno persistan entre comandos Bash, establezca [`CLAUDE_ENV_FILE`](/docs/es/env-vars) en un script de shell antes de lanzar Claude Code, o use un [hook SessionStart](/docs/es/hooks#persist-environment-variables) para poblarlo dinámicamente.164Active su virtualenv o entorno conda antes de lanzar Claude Code. Para hacer que las variables de entorno persistan entre comandos Bash, establezca [`CLAUDE_ENV_FILE`](/docs/es/env-vars) en un script de shell antes de lanzar Claude Code, o use un [hook SessionStart](/docs/es/hooks#persist-environment-variables) para poblarlo dinámicamente.
165 165
167 Límites de tiempo de espera y salida167 Límites de tiempo de espera y salida
168</h3>168</h3>
169 169
170Cada comando se ejecuta bajo un tiempo de espera, y Claude lo gestiona: cuando necesita más tiempo que el predeterminado para un comando, pasa el parámetro `timeout` con esa llamada. Usted nunca establece un tiempo de espera por comando.170Cada comando se ejecuta bajo un tiempo de espera, y Claude lo gestiona: cuando necesita más tiempo que el predeterminado para un comando, pasa el parámetro `timeout` con esa llamada. Nunca establece un tiempo de espera por comando.
171 171
172Dos [variables de entorno](/docs/es/env-vars) controlan lo que Claude obtiene para un comando que se ejecuta en primer plano:172Dos [variables de entorno](/docs/es/env-vars) controlan lo que Claude obtiene para un comando que se ejecuta en primer plano:
173 173
174* `BASH_DEFAULT_TIMEOUT_MS` — el predeterminado cuando Claude no pasa tiempo de espera; dos minutos de forma predeterminada174* `BASH_DEFAULT_TIMEOUT_MS` — el predeterminado cuando Claude no pasa ningún tiempo de espera; dos minutos de forma predeterminada
175* `BASH_MAX_TIMEOUT_MS` — con el predeterminado, establece el límite máximo que limita lo que Claude solicita: el límite máximo efectivo es el mayor de los dos, diez minutos de forma predeterminada175* `BASH_MAX_TIMEOUT_MS` — con el predeterminado, establece el límite máximo que limita lo que Claude solicita: el límite máximo efectivo es el mayor de los dos, diez minutos de forma predeterminada
176 176
177Para un comando que Claude inicia en segundo plano, `timeout` en su lugar establece cuánto tiempo el comando puede ejecutarse allí, con el predeterminado y máximo separados descritos bajo [Comandos en segundo plano](#background-commands). La [herramienta PowerShell](#powershell-tool) sigue las mismas reglas de tiempo de espera y lee las mismas dos variables.177Para un comando que Claude inicia en segundo plano, `timeout` en su lugar establece cuánto tiempo puede ejecutarse el comando allí, con el predeterminado y máximo separados descritos en [Límite de tiempo para comandos en segundo plano](#time-limit-for-background-commands). La [herramienta PowerShell](#powershell-tool) sigue las mismas reglas de tiempo de espera y lee las mismas dos variables.
178 178
179<h4 id="output-limits">179<h4 id="output-limits">
180 Límites de salida180 Límites de salida
189 189
190Un comando que sale con código 1 cuenta como un resultado válido para la herramienta Bash solo cuando Claude Code reconoce el código de salida 1 como un resultado benigno para ese comando: `grep`, `rg`, `egrep`, `fgrep`, `find`, `diff`, `test`, y `[`, más `git diff` y `git grep`. Todos los demás comandos que salen con código 1 cuentan como un fallo, incluso cuando el código de salida 1 es un resultado informativo benigno: sin coincidencias para `pgrep` y `jq -e`, archivos que difieren para `cmp`.190Un comando que sale con código 1 cuenta como un resultado válido para la herramienta Bash solo cuando Claude Code reconoce el código de salida 1 como un resultado benigno para ese comando: `grep`, `rg`, `egrep`, `fgrep`, `find`, `diff`, `test`, y `[`, más `git diff` y `git grep`. Todos los demás comandos que salen con código 1 cuentan como un fallo, incluso cuando el código de salida 1 es un resultado informativo benigno: sin coincidencias para `pgrep` y `jq -e`, archivos que difieren para `cmp`.
191 191
192[`BASH_MAX_OUTPUT_LENGTH`](/docs/es/env-vars) establece cuántos caracteres de salida Claude Code lee desde el archivo de trabajo hacia el resultado de un comando: 30.000 de forma predeterminada, hasta un límite máximo fijo de 150.000. Aumente esto cuando sus comandos se desborden rutinariamente de esa ventana, como una compilación detallada o un registro de suite de pruebas completo. Aumentarlo amplía la ventana de lectura, que también es la ventana desde la cual se corta el extracto de un comando fallido. No aumenta los límites en línea: un resultado válido sobre el límite en línea llega como una ruta de archivo más vista previa independientemente de esta variable.192[`BASH_MAX_OUTPUT_LENGTH`](/docs/es/env-vars) establece cuántos caracteres de salida Claude Code lee desde el archivo de trabajo hacia el resultado de un comando: 30.000 de forma predeterminada, hasta un límite máximo fijo de 150.000. Auméntelo cuando sus comandos se desborden rutinariamente de esa ventana, como una compilación detallada o un registro completo de suite de pruebas. Aumentarlo amplía la ventana de lectura, que también es la ventana de la que se corta el extracto de un comando fallido. No aumenta los límites en línea: un resultado válido sobre el límite en línea llega como una ruta de archivo más vista previa independientemente de esta variable.
193 193
194Para cambiar cuánta salida válida recibe Claude en línea, establezca la configuración [`bashOutputMaxChars`](/docs/es/settings-reference#bashoutputmaxchars) en su lugar, hasta 128.000 caracteres. Dimensiona el límite en línea y la ventana de lectura juntos, y Claude Code ignora `BASH_MAX_OUTPUT_LENGTH`. Requiere Claude Code v2.1.261 o posterior.194Para cambiar cuánta salida válida recibe Claude en línea, establezca la configuración [`bashOutputMaxChars`](/docs/es/settings-reference#bashoutputmaxchars) en su lugar, hasta 128.000 caracteres. Dimensiona el límite en línea y la ventana de lectura juntos, y Claude Code ignora `BASH_MAX_OUTPUT_LENGTH`. Requiere Claude Code v2.1.261 o posterior.
195 195
199 199
200Para procesos de larga duración como servidores de desarrollo o compilaciones de vigilancia, Claude puede establecer `run_in_background: true` para iniciar el comando como una tarea en segundo plano y continuar trabajando mientras se ejecuta. Liste y detenga tareas en segundo plano con `/tasks`. Después de detener una allí, o desde un cliente conectado como la aplicación de escritorio, Claude continúa en lugar de esperar. Si un subagente inició el comando, es ese subagente el que continúa.200Para procesos de larga duración como servidores de desarrollo o compilaciones de vigilancia, Claude puede establecer `run_in_background: true` para iniciar el comando como una tarea en segundo plano y continuar trabajando mientras se ejecuta. Liste y detenga tareas en segundo plano con `/tasks`. Después de detener una allí, o desde un cliente conectado como la aplicación de escritorio, Claude continúa en lugar de esperar. Si un subagente inició el comando, es ese subagente el que continúa.
201 201
202Un comando que un [subagente en primer plano](/docs/es/sub-agents#run-subagents-in-foreground-or-background) inició se detiene cuando ese subagente da su respuesta final, ya sea que haya terminado, fallado o fue interrumpido. Un comando que la conversación principal o un subagente en segundo plano inició sigue ejecutándose después de una respuesta final, hasta que sale, se detiene, o alcanza su límite de tiempo. En modo no interactivo con la bandera `-p`, [los comandos en segundo plano terminan poco después del resultado final de la ejecución](/docs/es/headless#background-tasks-at-exit).202<h4 id="when-a-background-command-stops">
203 Cuándo se detiene un comando en segundo plano
204</h4>
205
206Un comando que un [subagente en primer plano](/docs/es/sub-agents#run-subagents-in-foreground-or-background) inició se detiene cuando finaliza la ejecución de ese subagente, ya sea que se haya completado, fallado o fue interrumpido. Un comando que la conversación principal o un subagente en segundo plano inició continúa ejecutándose después de una respuesta final, hasta que sale, se detiene o alcanza su [límite de tiempo](#time-limit-for-background-commands). En modo no interactivo con la bandera `-p`, [los comandos en segundo plano terminan poco después del resultado final de la ejecución](/docs/es/headless#background-tasks-at-exit).
207
208<h4 id="time-limit-for-background-commands">
209 Límite de tiempo para comandos en segundo plano
210</h4>
203 211
204Los comandos Bash y PowerShell en segundo plano tienen un límite de tiempo, contado desde el momento en que el comando entra en segundo plano:212Los comandos Bash y PowerShell en segundo plano tienen un límite de tiempo, contado desde el momento en que el comando entra en segundo plano:
205 213
206* Un comando que Claude inicia en segundo plano obtiene 30 minutos, o el `timeout` que Claude pasa con `run_in_background`, hasta un máximo de 2 horas214* Un comando que Claude inicia en segundo plano obtiene 30 minutos, o el `timeout` que Claude pasa con `run_in_background`, hasta un máximo de 2 horas
207* Un comando que comienza en primer plano y luego se mueve al segundo plano, por ejemplo con `Ctrl+B` o en su tiempo de espera, obtiene 30 minutos desde el movimiento215* Un comando que comienza en primer plano y luego se mueve a segundo plano, por ejemplo con `Ctrl+B` o en su tiempo de espera, obtiene 30 minutos desde el movimiento
208 216
209Dos [variables de entorno](/docs/es/env-vars) elevan estos límites, para comandos Bash y PowerShell por igual. Ambas toman milisegundos, y ninguna puede acortar un límite: un valor más bajo deja el predeterminado de 30 minutos y el máximo de 2 horas en su lugar.217Cuando un comando en segundo plano alcanza su límite de tiempo, Claude Code lo detiene y le dice a Claude por qué, y Claude puede iniciar el comando nuevamente con un `timeout` más largo si el trabajo aún lo necesita. El aviso de detención dice `Background command "<description>" was stopped after reaching its background time limit`.
218
219<h4 id="raise-the-time-limit-for-background-commands">
220 Aumente el límite de tiempo para comandos en segundo plano
221</h4>
222
223Dos [variables de entorno](/docs/es/env-vars) aumentan estos límites, para comandos Bash y PowerShell por igual. Ambas toman milisegundos, y ninguna puede acortar un límite: un valor más bajo deja el predeterminado de 30 minutos y el máximo de 2 horas en su lugar.
210 224
211* Establezca `BASH_DEFAULT_TIMEOUT_MS` por encima de `1800000` para reemplazar el predeterminado de 30 minutos con ese valor, tanto para comandos que Claude inicia sin un `timeout` como para comandos movidos225* Establezca `BASH_DEFAULT_TIMEOUT_MS` por encima de `1800000` para reemplazar el predeterminado de 30 minutos con ese valor, tanto para comandos que Claude inicia sin un `timeout` como para comandos movidos
212* Establezca `BASH_MAX_TIMEOUT_MS` por encima de `7200000` para elevar el máximo de 2 horas a ese valor. Establecer `BASH_DEFAULT_TIMEOUT_MS` por encima de `7200000` eleva el máximo de la misma manera226* Establezca `BASH_MAX_TIMEOUT_MS` por encima de `7200000` para aumentar el máximo de 2 horas a ese valor. Establecer `BASH_DEFAULT_TIMEOUT_MS` por encima de `7200000` aumenta el máximo de la misma manera
213 227
214Cuando un comando en segundo plano alcanza su límite de tiempo, Claude Code lo detiene y le dice a Claude por qué, y Claude puede iniciar el comando nuevamente con un `timeout` más largo si el trabajo aún lo necesita. El aviso de parada dice `Background command "<description>" was stopped after reaching its background time limit`.228<h4 id="foreground-commands-that-move-to-the-background">
229 Comandos en primer plano que se mueven a segundo plano
230</h4>
215 231
216Cuando un comando en primer plano alcanza su tiempo de espera sin terminar, Claude Code lo mueve al segundo plano en lugar de detenerlo, a menos que el comando comience con `sleep`. El límite de tiempo de un comando movido se cuenta desde el movimiento, y el comando movido de un subagente en primer plano aún se detiene cuando ese subagente da su respuesta final.232Cuando un comando en primer plano alcanza su tiempo de espera sin terminar, Claude Code lo mueve a segundo plano en lugar de detenerlo, a menos que el comando comience con `sleep`. El [límite de tiempo](#time-limit-for-background-commands) de un comando movido se cuenta desde el movimiento, y el comando movido de un subagente en primer plano aún se detiene cuando finaliza la ejecución de ese subagente.
217 233
218Establecer [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1`](/docs/es/env-vars#variables) desactiva el segundo plano automático junto con el resto de la funcionalidad de tareas en segundo plano.234Establecer [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1`](/docs/es/env-vars#variables) desactiva el auto-backgrounding junto con el resto de la funcionalidad de tareas en segundo plano.
219 235
220El resultado de un comando movido al segundo plano indica lo que sucedió:236El resultado de un comando movido a segundo plano indica lo que sucedió:
221 237
222* Cuando el tiempo de espera activa el movimiento, el resultado lo reporta explícitamente: `Command did not complete within its 120s timeout and was moved to the background`, con los segundos coincidiendo con el tiempo de espera que se aplicó, seguido del ID de tarea y la ruta del archivo en el que se escribe la salida.238* Cuando el tiempo de espera desencadena el movimiento, el resultado lo reporta explícitamente: `Command did not complete within its 120s timeout and was moved to the background`, con los segundos coincidiendo con el tiempo de espera que se aplicó, seguido del ID de tarea y la ruta del archivo en el que se escribe la salida.
223* Un `cd`, `pushd`, `popd`, o `chdir` dentro de un comando que se mueve al segundo plano nunca se mantiene: el resultado indica `Session cwd remains <dir>; directory changes made by the backgrounded command do not apply to subsequent commands.`, por lo que Claude no actúa sobre un cambio de directorio que no sucedió.239* Un `cd`, `pushd`, `popd`, o `chdir` dentro de un comando que se mueve a segundo plano nunca se mantiene: el resultado indica `Session cwd remains <dir>; directory changes made by the backgrounded command do not apply to subsequent commands.`, por lo que Claude no actúa sobre un cambio de directorio que no sucedió.
224 240
225<h3 id="memory-limit-on-linux-and-wsl">241<h3 id="memory-limit-on-linux-and-wsl">
226 Límite de memoria en Linux y WSL242 Límite de memoria en Linux y WSL
227</h3>243</h3>
228 244
229En Linux y WSL, establezca [`CLAUDE_CODE_TOOL_MEMORY_LIMIT`](/docs/es/env-vars#variables) en un tamaño como `4G` para limitar la memoria que los comandos de herramientas Bash, PowerShell y [Monitor](#monitor-tool) pueden usar, de modo que una compilación descontrolada no consuma la memoria que el resto de la sesión necesita. Requiere Claude Code v2.1.233 o posterior. Antes de v2.1.246, los comandos de herramientas Monitor se ejecutaban fuera del límite.245En Linux y WSL, establezca [`CLAUDE_CODE_TOOL_MEMORY_LIMIT`](/docs/es/env-vars#variables) en un tamaño como `4G` para limitar la memoria que los comandos de las herramientas Bash, PowerShell y [Monitor](#monitor-tool) pueden usar, de modo que una compilación descontrolada no consuma la memoria que el resto de la sesión necesita. Requiere Claude Code v2.1.233 o posterior. Antes de v2.1.246, los comandos de la herramienta Monitor se ejecutaban fuera del límite.
230 246
231* Escriba el tamaño como un número de bytes o con un sufijo `K`, `M`, `G`, o `T`. Establezca `0`, `off`, `false`, `no`, o `none` para desactivar el límite. Claude Code ignora cualquier otro valor que no pueda leer como un tamaño, como `4e9`.247* Escriba el tamaño como un número de bytes o con un sufijo `K`, `M`, `G`, o `T`. Establezca `0`, `off`, `false`, `no`, o `none` para desactivar el límite. Claude Code ignora cualquier otro valor que no pueda leer como un tamaño, como `4e9`.
232* Claude Code cuenta todos los comandos Bash, PowerShell y Monitor de una sesión contra el límite único, no cada comando por su cuenta.248* Claude Code cuenta todos los comandos Bash, PowerShell y Monitor de una sesión contra el límite único, no cada comando por su cuenta.
233* Claude Code aplica el límite con un cgroup de memoria. Cuando no puede configurar el cgroup, los comandos se ejecutan sin límite, y el registro de depuración de `claude --debug` indica por qué.249* Claude Code aplica el límite con un cgroup de memoria. Cuando no puede configurar el cgroup, los comandos se ejecutan sin límite, y el registro de depuración de `claude --debug` dice por qué.
234* Después de que el primer proceso que Claude Code inicia ha activado el límite, o lo ha desactivado debido a un valor desactivado o una configuración de cgroup fallida, Claude Code mantiene ese resultado hasta que reinicie. Para aplicar un valor cambiado o eliminado, o una configuración corregida, lance `claude` nuevamente.250* Después de que el primer proceso que Claude Code inicia haya activado el límite, o lo haya desactivado debido a un valor off o una configuración de cgroup fallida, Claude Code mantiene ese resultado hasta que relance. Para aplicar un valor cambiado o eliminado, o una configuración fija, lance `claude` nuevamente.
235* Cuando los comandos no pueden mantenerse bajo el límite, el kernel detiene un comando, y nada en su resultado nombra el límite.251* Cuando los comandos no pueden mantenerse bajo el límite, el kernel detiene un comando, y nada en su resultado nombra el límite.
236 252
237Claude Code también puede contar otros tipos de procesos que inicia contra el mismo límite. Establezca [`CLAUDE_CODE_TOOL_MEMORY_CGROUP_EXCLUDE`](/docs/es/env-vars#variables) en una lista separada por comas de los tipos a eximir del límite; Claude Code aplica el límite a cada tipo que no esté en su lista. Establézcalo en `none` para limitar cada tipo, o en `all-new` para limitar solo comandos de herramientas Bash, PowerShell y Monitor. Requiere Claude Code v2.1.246 o posterior. Los tipos que puede nombrar:253Claude Code también puede contar otros tipos de procesos que inicia contra el mismo límite. Establezca [`CLAUDE_CODE_TOOL_MEMORY_CGROUP_EXCLUDE`](/docs/es/env-vars#variables) en una lista separada por comas de los tipos a eximir del límite; Claude Code aplica el límite a cada tipo que no esté en su lista. Establézcalo en `none` para limitar cada tipo, o en `all-new` para limitar solo los comandos de las herramientas Bash, PowerShell y Monitor. Requiere Claude Code v2.1.246 o posterior. Los tipos que puede nombrar:
238 254
239* `mcp`: [servidores MCP](/docs/es/mcp) locales255* `mcp`: servidores [MCP](/docs/es/mcp) locales
240* `lsp`: [servidores de lenguaje](#lsp-tool-behavior)256* `lsp`: [servidores de lenguaje](#lsp-tool-behavior)
241* `hooks`: comandos de [hook](/docs/es/hooks)257* `hooks`: comandos de [hook](/docs/es/hooks)
242* `plugin`: comandos que ejecutan [plugins](/docs/es/plugins/overview)258* `plugin`: comandos que ejecutan [plugins](/docs/es/plugins/overview)
246Sea lo que sea que liste, estas reglas se aplican:262Sea lo que sea que liste, estas reglas se aplican:
247 263
248* **Nombres desconocidos**: Claude Code ignora nombres que no reconoce264* **Nombres desconocidos**: Claude Code ignora nombres que no reconoce
249* **Bash, PowerShell y Monitor**: Claude Code mantiene comandos de herramientas Bash, PowerShell y Monitor bajo el límite sea lo que sea que liste265* **Bash, PowerShell y Monitor**: Claude Code mantiene los comandos de las herramientas Bash, PowerShell y Monitor bajo el límite sea lo que sea que liste
250* **Variable no establecida**: Claude Code toma el conjunto de otros tipos limitados de la configuración que Anthropic entrega desde el servidor, y ese conjunto puede cambiar con el tiempo, por lo que establezca la variable cuando necesite un conjunto que no cambie266* **Variable no establecida**: Claude Code toma el conjunto de otros tipos limitados de la configuración que Anthropic entrega desde el servidor, y ese conjunto puede cambiar con el tiempo, así que establezca la variable cuando necesite un conjunto que no cambie
251* **Hooks de control de permisos**: incluso con cada tipo limitado, Claude Code excluye del límite un hook que puede bloquear o cambiar el resultado de una acción, y cualquier servidor MCP que tal hook llame, por lo que el kernel matando un hook de control de permisos no puede permitir la acción que estaba bloqueando267* **Hooks de control de permisos**: incluso con cada tipo limitado, Claude Code excluye del límite un hook que puede bloquear o cambiar el resultado de una acción, y cualquier servidor MCP que tal hook llame, de modo que el kernel matando un hook de control de permisos no puede permitir la acción que estaba bloqueando
252 268
253<h2 id="edit-tool-behavior">269<h2 id="edit-tool-behavior">
254 Comportamiento de la herramienta Edit270 Comportamiento de la herramienta Edit