159 * Se `cd` sair desses diretórios, Claude Code redefine para o diretório do projeto e anexa `Shell cwd was reset to <dir>` ao resultado da ferramenta.159 * Se `cd` sair desses diretórios, Claude Code redefine para o diretório do projeto e anexa `Shell cwd was reset to <dir>` ao resultado da ferramenta.
160 * Para desabilitar esse carregamento de forma que cada comando Bash comece no diretório do projeto, defina `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1`.160 * Para desabilitar esse carregamento de forma que cada comando Bash comece no diretório do projeto, defina `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1`.
161* Variáveis de ambiente não persistem. Um `export` em um comando não estará disponível no próximo.161* Variáveis de ambiente não persistem. Um `export` em um comando não estará disponível no próximo.
162* Aliases e funções de shell definidas no arquivo de inicialização do seu shell estão disponíveis. No início da sessão, Claude Code carrega `~/.zshrc`, `~/.bashrc`, ou `~/.profile` dependendo do seu shell, captura os aliases, funções e opções de shell resultantes e os aplica a cada comando Bash.162* Aliases e funções de shell definidas no seu arquivo de inicialização de shell estão disponíveis. No início da sessão, Claude Code carrega `~/.zshrc`, `~/.bashrc`, ou `~/.profile` dependendo do seu shell, captura os aliases, funções e opções de shell resultantes e os aplica a cada comando Bash.
163 163
164Ative seu virtualenv ou ambiente conda antes de iniciar Claude Code. Para fazer variáveis de ambiente persistirem entre comandos Bash, defina [`CLAUDE_ENV_FILE`](/docs/pt/env-vars) para um script de shell antes de iniciar Claude Code, ou use um [hook SessionStart](/docs/pt/hooks#persist-environment-variables) para preenchê-lo dinamicamente.164Ative seu virtualenv ou ambiente conda antes de iniciar Claude Code. Para fazer variáveis de ambiente persistirem entre comandos Bash, defina [`CLAUDE_ENV_FILE`](/docs/pt/env-vars) para um script de shell antes de iniciar Claude Code, ou use um [hook SessionStart](/docs/pt/hooks#persist-environment-variables) para preenchê-lo dinamicamente.
165 165
167 Limites de timeout e saída167 Limites de timeout e saída
168</h3>168</h3>
169 169
170Cada comando é executado sob um timeout, e Claude o gerencia: quando quer mais tempo do que o padrão para um comando, ele passa o parâmetro `timeout` com essa chamada. Você nunca define um timeout por comando.170Cada comando é executado sob um timeout, e Claude o gerencia: quando precisa de mais tempo do que o padrão para um comando, ele passa o parâmetro `timeout` com essa chamada. Você nunca define um timeout por comando.
171 171
172Duas [variáveis de ambiente](/docs/pt/env-vars) controlam o que Claude obtém para um comando que é executado em primeiro plano:172Duas [variáveis de ambiente](/docs/pt/env-vars) controlam o que Claude obtém para um comando que é executado em primeiro plano:
173 173
174* `BASH_DEFAULT_TIMEOUT_MS` — o padrão quando Claude não passa timeout; dois minutos por padrão174* `BASH_DEFAULT_TIMEOUT_MS` — o padrão quando Claude não passa timeout; dois minutos por padrão
175* `BASH_MAX_TIMEOUT_MS` — com o padrão, define o limite máximo que limita o que Claude solicita: o limite efetivo é o maior dos dois, dez minutos por padrão175* `BASH_MAX_TIMEOUT_MS` — com o padrão, define o limite máximo que limita o que Claude solicita: o limite efetivo é o maior dos dois, dez minutos por padrão
176 176
177Para um comando que Claude inicia em segundo plano, `timeout` define por quanto tempo o comando pode ser executado lá, com o padrão e máximo separados descritos em [Comandos em segundo plano](#background-commands). A [ferramenta PowerShell](#powershell-tool) segue as mesmas regras de timeout e lê as mesmas duas variáveis.177Para um comando que Claude inicia em segundo plano, `timeout` define por quanto tempo o comando pode ser executado lá, com o padrão e máximo separados descritos em [Limite de tempo para comandos em segundo plano](#time-limit-for-background-commands). A [ferramenta PowerShell](#powershell-tool) segue as mesmas regras de timeout e lê as mesmas duas variáveis.
178 178
179<h4 id="output-limits">179<h4 id="output-limits">
180 Limites de saída180 Limites de saída
185| Resultado | O que Claude obtém |185| Resultado | O que Claude obtém |
186| :- | :- |186| :- | :- |
187| Válido | Inline até aproximadamente 30.000 caracteres por padrão; além disso, o caminho de um arquivo salvo no diretório da sessão e truncado após 64 MiB, mais uma visualização de até os primeiros 2.000 caracteres, e Claude lê ou pesquisa o arquivo quando precisa do resto |187| Válido | Inline até aproximadamente 30.000 caracteres por padrão; além disso, o caminho de um arquivo salvo no diretório da sessão e truncado após 64 MiB, mais uma visualização de até os primeiros 2.000 caracteres, e Claude lê ou pesquisa o arquivo quando precisa do resto |
188| Falha | Inline até aproximadamente 10.000 caracteres; além disso, um trecho de cabeça e cauda desse tamanho cortado da janela de releitura, sem caminho de arquivo |188| Falha | Inline até aproximadamente 10.000 caracteres; além disso, um trecho de cabeçalho e cauda desse tamanho cortado da janela de releitura, sem caminho de arquivo |
189 189
190Um comando que sai com código 1 conta como um resultado válido para a ferramenta Bash apenas quando Claude Code reconhece o código de saída 1 como um resultado benigno para esse comando: `grep`, `rg`, `egrep`, `fgrep`, `find`, `diff`, `test`, e `[`, mais `git diff` e `git grep`. Todo outro comando que sai com código 1 conta como uma falha, mesmo quando o código de saída 1 é um resultado informacional benigno: sem correspondências para `pgrep` e `jq -e`, arquivos que diferem para `cmp`.190Um comando que sai com código 1 conta como um resultado válido para a ferramenta Bash apenas quando Claude Code reconhece o código de saída 1 como um resultado benigno para esse comando: `grep`, `rg`, `egrep`, `fgrep`, `find`, `diff`, `test`, e `[`, mais `git diff` e `git grep`. Todo outro comando que sai com código 1 conta como uma falha, mesmo quando o código de saída 1 é um resultado informacional benigno: sem correspondências para `pgrep` e `jq -e`, arquivos que diferem para `cmp`.
191 191
192[`BASH_MAX_OUTPUT_LENGTH`](/docs/pt/env-vars) define quantos caracteres de saída Claude Code relê do arquivo de trabalho para o resultado de um comando: 30.000 por padrão, até um limite máximo de 150.000. Aumente quando seus comandos rotineiramente ultrapassam essa janela, como um build verboso ou um log de suite de testes completo. Aumentá-lo amplia a janela de releitura, que também é a janela de onde um trecho de comando com falha é cortado. Não aumenta os limites inline: um resultado válido acima do limite inline chega como um caminho de arquivo mais visualização independentemente dessa variável.192[`BASH_MAX_OUTPUT_LENGTH`](/docs/pt/env-vars) define quantos caracteres de saída Claude Code relê do arquivo de trabalho para o resultado de um comando: 30.000 por padrão, até um limite máximo de 150.000. Aumente quando seus comandos rotineiramente ultrapassarem essa janela, como um build verboso ou um log de suite de testes completo. Aumentá-lo amplia a janela de releitura, que também é a janela de onde um trecho de comando com falha é cortado. Não aumenta os limites inline: um resultado válido acima do limite inline chega como um caminho de arquivo mais visualização independentemente dessa variável.
193 193
194Para alterar quanto de um resultado válido Claude recebe inline, defina a configuração [`bashOutputMaxChars`](/docs/pt/settings-reference#bashoutputmaxchars) em vez disso, até 128.000 caracteres. Ela dimensiona o limite inline e a janela de releitura juntos, e Claude Code então ignora `BASH_MAX_OUTPUT_LENGTH`. Requer Claude Code v2.1.261 ou posterior.194Para alterar quanto de um resultado válido Claude recebe inline, defina a configuração [`bashOutputMaxChars`](/docs/pt/settings-reference#bashoutputmaxchars) em vez disso, até 128.000 caracteres. Ele dimensiona o limite inline e a janela de releitura juntos, e Claude Code então ignora `BASH_MAX_OUTPUT_LENGTH`. Requer Claude Code v2.1.261 ou posterior.
195 195
196<h3 id="background-commands">196<h3 id="background-commands">
197 Comandos em segundo plano197 Comandos em segundo plano
198</h3>198</h3>
199 199
200Para processos de longa duração, como servidores de desenvolvimento ou builds de observação, Claude pode definir `run_in_background: true` para iniciar o comando como uma tarefa em segundo plano e continuar trabalhando enquanto é executado. Liste e interrompa tarefas em segundo plano com `/tasks`. Depois que você interromper uma lá, ou de um cliente conectado como o aplicativo de desktop, Claude continua em vez de esperar. Se um subagentos iniciou o comando, é esse subagentos que continua.200Para processos de longa duração, como servidores de desenvolvimento ou builds de observação, Claude pode definir `run_in_background: true` para iniciar o comando como uma tarefa em segundo plano e continuar trabalhando enquanto é executado. Liste e interrompa tarefas em segundo plano com `/tasks`. Depois de interromper uma lá, ou de um cliente conectado como o aplicativo de desktop, Claude continua em vez de esperar. Se um subagentos iniciou o comando, é esse subagentos que continua.
201 201
202Um comando que um [subagentos em primeiro plano](/docs/pt/sub-agents#run-subagents-in-foreground-or-background) iniciou para quando a execução desse subagentos termina, independentemente de ter terminado, falhado ou sido interrompido. Um comando que a conversa principal ou um subagentos em segundo plano iniciou continua sendo executado após uma resposta final, até sair, ser interrompido ou atingir seu limite de tempo. No modo não interativo com a flag `-p`, [comandos em segundo plano terminam logo após o resultado final da execução](/docs/pt/headless#background-tasks-at-exit).202<h4 id="when-a-background-command-stops">
203 Quando um comando em segundo plano para
204</h4>
205
206Um comando que um [subagentos em primeiro plano](/docs/pt/sub-agents#run-subagents-in-foreground-or-background) iniciou para quando a execução desse subagentos termina, quer tenha terminado, falhado ou sido interrompido. Um comando que a conversa principal ou um subagentos em segundo plano iniciou continua sendo executado após uma resposta final, até sair, ser interrompido ou atingir seu [limite de tempo](#time-limit-for-background-commands). No modo não interativo com a flag `-p`, [comandos em segundo plano terminam logo após o resultado final da execução](/docs/pt/headless#background-tasks-at-exit).
207
208<h4 id="time-limit-for-background-commands">
209 Limite de tempo para comandos em segundo plano
210</h4>
203 211
204Comandos Bash e PowerShell em segundo plano têm um limite de tempo, contado a partir do momento em que o comando entra em segundo plano:212Comandos Bash e PowerShell em segundo plano têm um limite de tempo, contado a partir do momento em que o comando entra em segundo plano:
205 213
206* Um comando que Claude inicia em segundo plano obtém 30 minutos, ou o `timeout` que Claude passa com `run_in_background`, até um máximo de 2 horas214* Um comando que Claude inicia em segundo plano obtém 30 minutos, ou o `timeout` que Claude passa com `run_in_background`, até um máximo de 2 horas
207* Um comando que começa em primeiro plano e depois se move para segundo plano, por exemplo com `Ctrl+B` ou em seu timeout, obtém 30 minutos a partir da mudança215* Um comando que começa em primeiro plano e depois se move para segundo plano, por exemplo com `Ctrl+B` ou em seu timeout, obtém 30 minutos a partir da mudança
208 216
217Quando um comando em segundo plano atinge seu limite de tempo, Claude Code o interrompe e diz a Claude por quê, e Claude pode iniciar o comando novamente com um `timeout` mais longo se o trabalho ainda precisar. O aviso de parada lê `Background command "<description>" was stopped after reaching its background time limit`.
218
219<h4 id="raise-the-time-limit-for-background-commands">
220 Aumente o limite de tempo para comandos em segundo plano
221</h4>
222
209Duas [variáveis de ambiente](/docs/pt/env-vars) aumentam esses limites, para comandos Bash e PowerShell igualmente. Ambas usam milissegundos, e nenhuma pode encurtar um limite: um valor mais baixo deixa o padrão de 30 minutos e o máximo de 2 horas em vigor.223Duas [variáveis de ambiente](/docs/pt/env-vars) aumentam esses limites, para comandos Bash e PowerShell igualmente. Ambas usam milissegundos, e nenhuma pode encurtar um limite: um valor mais baixo deixa o padrão de 30 minutos e o máximo de 2 horas em vigor.
210 224
211* Defina `BASH_DEFAULT_TIMEOUT_MS` acima de `1800000` para substituir o padrão de 30 minutos por esse valor, tanto para comandos que Claude inicia sem um `timeout` quanto para comandos movidos225* Defina `BASH_DEFAULT_TIMEOUT_MS` acima de `1800000` para substituir o padrão de 30 minutos por esse valor, tanto para comandos que Claude inicia sem um `timeout` quanto para comandos movidos
212* Defina `BASH_MAX_TIMEOUT_MS` acima de `7200000` para aumentar o máximo de 2 horas para esse valor. Definir `BASH_DEFAULT_TIMEOUT_MS` acima de `7200000` aumenta o máximo da mesma forma226* Defina `BASH_MAX_TIMEOUT_MS` acima de `7200000` para aumentar o máximo de 2 horas para esse valor. Definir `BASH_DEFAULT_TIMEOUT_MS` acima de `7200000` aumenta o máximo da mesma forma
213 227
214Quando um comando em segundo plano atinge seu limite de tempo, Claude Code o interrompe e diz a Claude por quê, e Claude pode iniciar o comando novamente com um `timeout` mais longo se o trabalho ainda precisar. O aviso de parada lê `Background command "<description>" was stopped after reaching its background time limit`.228<h4 id="foreground-commands-that-move-to-the-background">
229 Comandos em primeiro plano que se movem para segundo plano
230</h4>
215 231
216Quando um comando em primeiro plano atinge seu timeout sem terminar, Claude Code o move para segundo plano em vez de interrompê-lo, a menos que o comando comece com `sleep`. O limite de tempo de um comando movido é contado a partir da mudança, e um comando movido de um subagentos em primeiro plano ainda para quando a execução desse subagentos termina.232Quando um comando em primeiro plano atinge seu timeout sem terminar, Claude Code o move para segundo plano em vez de interrompê-lo, a menos que o comando comece com `sleep`. O [limite de tempo](#time-limit-for-background-commands) de um comando movido é contado a partir da mudança, e um comando movido de um subagentos em primeiro plano ainda para quando a execução desse subagentos termina.
217 233
218Definir [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1`](/docs/pt/env-vars#variables) desabilita o auto-backgrounding junto com o resto da funcionalidade de tarefas em segundo plano.234Definir [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1`](/docs/pt/env-vars#variables) desabilita o auto-backgrounding junto com o resto da funcionalidade de tarefas em segundo plano.
219 235
220O resultado de um comando movido para segundo plano indica o que aconteceu:236O resultado de um comando movido para segundo plano declara o que aconteceu:
221 237
222* Quando o timeout dispara a mudança, o resultado relata explicitamente: `Command did not complete within its 120s timeout and was moved to the background`, com os segundos correspondendo ao timeout que se aplicava, seguido pela ID da tarefa e o caminho do arquivo para o qual a saída está sendo escrita.238* Quando o timeout dispara a mudança, o resultado relata explicitamente: `Command did not complete within its 120s timeout and was moved to the background`, com os segundos correspondendo ao timeout que se aplicava, seguido pela ID da tarefa e o caminho do arquivo para o qual a saída está sendo escrita.
223* Um `cd`, `pushd`, `popd`, ou `chdir` dentro de um comando que é movido para segundo plano nunca é mantido: o resultado afirma `Session cwd remains <dir>; directory changes made by the backgrounded command do not apply to subsequent commands.`, então Claude não age em uma mudança de diretório que não aconteceu.239* Um `cd`, `pushd`, `popd`, ou `chdir` dentro de um comando que é movido para segundo plano nunca é mantido: o resultado declara `Session cwd remains <dir>; directory changes made by the backgrounded command do not apply to subsequent commands.`, então Claude não age em uma mudança de diretório que não aconteceu.
224 240
225<h3 id="memory-limit-on-linux-and-wsl">241<h3 id="memory-limit-on-linux-and-wsl">
226 Limite de memória em Linux e WSL242 Limite de memória no Linux e WSL
227</h3>243</h3>
228 244
229Em Linux e WSL, defina [`CLAUDE_CODE_TOOL_MEMORY_LIMIT`](/docs/pt/env-vars#variables) para um tamanho como `4G` para limitar a memória que comandos Bash, PowerShell e [Monitor](#monitor-tool) podem usar, para que um build descontrolado não consuma a memória que o resto da sessão precisa. Requer Claude Code v2.1.233 ou posterior. Antes de v2.1.246, comandos da ferramenta Monitor eram executados fora do limite.245No Linux e WSL, defina [`CLAUDE_CODE_TOOL_MEMORY_LIMIT`](/docs/pt/env-vars#variables) para um tamanho como `4G` para limitar a memória que comandos Bash, PowerShell e [Monitor](#monitor-tool) podem usar, para que um build descontrolado não consuma a memória que o resto da sessão precisa. Requer Claude Code v2.1.233 ou posterior. Antes de v2.1.246, comandos da ferramenta Monitor eram executados fora do limite.
230 246
231* Escreva o tamanho como um número de bytes ou com um sufixo `K`, `M`, `G`, ou `T`. Defina `0`, `off`, `false`, `no`, ou `none` para desativar o limite. Claude Code ignora qualquer outro valor que não consiga ler como um tamanho, como `4e9`.247* Escreva o tamanho como um número de bytes ou com um sufixo `K`, `M`, `G`, ou `T`. Defina `0`, `off`, `false`, `no`, ou `none` para desativar o limite. Claude Code ignora qualquer outro valor que não consiga ler como um tamanho, como `4e9`.
232* Claude Code conta todos os comandos Bash, PowerShell e Monitor de uma sessão contra o único limite, não cada comando por si só.248* Claude Code conta todos os comandos Bash, PowerShell e Monitor de uma sessão contra o único limite, não cada comando por si só.
247 263
248* **Nomes desconhecidos**: Claude Code ignora nomes que não reconhece264* **Nomes desconhecidos**: Claude Code ignora nomes que não reconhece
249* **Bash, PowerShell e Monitor**: Claude Code mantém comandos Bash, PowerShell e Monitor tool sob o limite seja qual for sua lista265* **Bash, PowerShell e Monitor**: Claude Code mantém comandos Bash, PowerShell e Monitor tool sob o limite seja qual for sua lista
250* **Variável não definida**: Claude Code pega o conjunto de outros tipos limitados da configuração que Anthropic entrega do servidor, e esse conjunto pode mudar ao longo do tempo, então defina a variável quando você precisa de um conjunto que não muda266* **Variável não definida**: Claude Code pega o conjunto de outros tipos limitados da configuração que Anthropic entrega do servidor, e esse conjunto pode mudar ao longo do tempo, então defina a variável quando precisar de um conjunto que não mude
251* **Hooks com permissão**: mesmo com cada tipo limitado, Claude Code exclui do limite um hook que pode bloquear ou alterar o resultado de uma ação, e qualquer servidor MCP que tal hook chama, então o kernel matando um hook com permissão não pode permitir a ação que estava bloqueando267* **Hooks com permissão**: mesmo com cada tipo limitado, Claude Code exclui do limite um hook que pode bloquear ou alterar o resultado de uma ação, e qualquer servidor MCP que tal hook chama, então o kernel matando um hook com permissão não pode permitir a ação que estava bloqueando
252 268
253<h2 id="edit-tool-behavior">269<h2 id="edit-tool-behavior">