[BUG] Aprovação de ferramenta de escrita não persiste entre execuções de scheduled task — nem via toggle, nem via "sempre permitir" no prompt
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Tenho 2 scheduled tasks locais que fazem chamadas de escrita (banco via MCP, e/ou curl para webhooks) e que já travaram por horas esperando aprovação, mesmo depois de eu tentar as duas formas de resolver que a documentação sugere:
sync-gestor-export-metrics (cron 0 , hora em hora) — usa Bash (psql, leitura) e query_database (MCP Lovable, escrita/INSERT). Já tive períodos de ~4h30 sem execução bem-sucedida quando deveria ser ~1h.
escalonamento-slack-teste (cron /30 *) — usa query_database (MCP Lovable, INSERT/UPDATE) e curl via Bash pra webhooks do Slack. Ficou 18 horas seguidas sem completar um ciclo (20/08 18h31 → 21/08 ~12h), enquanto outras rotinas horárias no mesmo período rodavam normalmente.
O que já tentei, sem sucesso, nas duas:
Ativar o toggle "Ignorar permissões" na tarefa — na primeira, o toggle voltou desligado sozinho depois de um novo pedido de aprovação.
Aprovar a chamada específica com "sempre permitir" no prompt quando apareceu — mesmo assim voltou a pedir aprovação na execução seguinte.
Confirmei que cada disparo agendado cria uma sessão nova (sessionId diferente a cada execução, mesmo taskId) — minha hipótese é que a aprovação de ferramenta (de qualquer tipo, toggle ou "sempre permitir") fica associada à sessão em que foi concedida, não à tarefa agendada como um todo, o que inviabiliza qualquer automação recorrente que precise escrever via ferramenta sem supervisão constante.
Esperado: aprovação persistir de fato entre execuções da mesma tarefa agendada — é literalmente o que a mensagem de confirmação da ferramenta de criar/atualizar scheduled task promete: "Tool approvals granted during a run are stored on the task and auto-applied to future runs."
Atual: pede aprovação repetidamente, indefinidamente, até alguém abrir uma conversa interativa manualmente para "destravar" (confirmado que isso sempre resolve na hora, mas não é sustentável como operação diária).
Impacto: automações de produção que dependem de escrita (nesse caso, notificações reais para colaboradores) ficam sujeitas a atrasos de horas sem aviso confiável — tentativas de notificação via PushNotification também falharam por dois motivos diferentes ("terminal ativo, seria redundante" e "Remote Control inativo no celular"), então nem há um alerta que chegue de forma confiável quando isso acontece.
What Should Happen?
Tenho 2 scheduled tasks locais que fazem chamadas de escrita (banco via MCP, e/ou curl para webhooks) e que já travaram por horas esperando aprovação, mesmo depois de eu tentar as duas formas de resolver que a documentação sugere:
sync-gestor-export-metrics (cron 0 , hora em hora) — usa Bash (psql, leitura) e query_database (MCP Lovable, escrita/INSERT). Já tive períodos de ~4h30 sem execução bem-sucedida quando deveria ser ~1h.
escalonamento-slack-teste (cron /30 *) — usa query_database (MCP Lovable, INSERT/UPDATE) e curl via Bash pra webhooks do Slack. Ficou 18 horas seguidas sem completar um ciclo (20/08 18h31 → 21/08 ~12h), enquanto outras rotinas horárias no mesmo período rodavam normalmente.
O que já tentei, sem sucesso, nas duas:
Ativar o toggle "Ignorar permissões" na tarefa — na primeira, o toggle voltou desligado sozinho depois de um novo pedido de aprovação.
Aprovar a chamada específica com "sempre permitir" no prompt quando apareceu — mesmo assim voltou a pedir aprovação na execução seguinte.
Confirmei que cada disparo agendado cria uma sessão nova (sessionId diferente a cada execução, mesmo taskId) — minha hipótese é que a aprovação de ferramenta (de qualquer tipo, toggle ou "sempre permitir") fica associada à sessão em que foi concedida, não à tarefa agendada como um todo, o que inviabiliza qualquer automação recorrente que precise escrever via ferramenta sem supervisão constante.
Esperado: aprovação persistir de fato entre execuções da mesma tarefa agendada — é literalmente o que a mensagem de confirmação da ferramenta de criar/atualizar scheduled task promete: "Tool approvals granted during a run are stored on the task and auto-applied to future runs."
Atual: pede aprovação repetidamente, indefinidamente, até alguém abrir uma conversa interativa manualmente para "destravar" (confirmado que isso sempre resolve na hora, mas não é sustentável como operação diária).
Impacto: automações de produção que dependem de escrita (nesse caso, notificações reais para colaboradores) ficam sujeitas a atrasos de horas sem aviso confiável — tentativas de notificação via PushNotification também falharam por dois motivos diferentes ("terminal ativo, seria redundante" e "Remote Control inativo no celular"), então nem há um alerta que chegue de forma confiável quando isso acontece.
Error Messages/Logs
Resposta do list_connectors durante a execução agendada travada:
{"connectors":[],"note":"No installed connectors found — the card did not render."}
Tentativas de notificação (PushNotification) durante o mesmo tipo de bloqueio,
em execuções diferentes, com dois motivos de falha distintos:
1) "this terminal is active, so your output here already reaches the user;
a separate notification would be redundant"
2) "Mobile push not sent (Remote Control inactive)"
Não há stack trace/exceção — o padrão observado é a chamada de ferramenta
(query_database via MCP, ou curl via Bash) simplesmente não retornar dentro
da execução agendada, sem erro explícito, até a execução encerrar por conta
própria. A tarefa "escalonamento-slack-teste" ficou 18h sem completar nenhum
ciclo (20/08 18:31 → 21/08 ~12:00) nesse estado.
Steps to Reproduce
- Criar uma scheduled task recorrente (via a funcionalidade "Scheduled Tasks" do
Claude Code) cujo prompt use uma ferramenta que exija aprovação de escrita —
no meu caso, uma ferramenta MCP que roda INSERT/UPDATE num banco (via um
conector MCP), mas o mesmo padrão apareceu também com curl via Bash
chamando um webhook.
- Configurar a tarefa pra rodar em intervalo curto e recorrente (ex: cron
*/30 * * * * ou 0 * * * *).
- Na primeira execução agendada, quando o prompt de aprovação da ferramenta
de escrita aparecer, aprovar de uma das duas formas:
a) ativando o toggle "Ignorar permissões" da própria tarefa, OU
b) aprovando a chamada específica com "sempre permitir" no prompt.
- Deixar a tarefa rodar sozinha (sem abrir nenhuma conversa interativa) pelas
próximas execuções agendadas.
- Observar: a MESMA ferramenta volta a pedir aprovação nas execuções
seguintes, como se nenhuma aprovação anterior tivesse sido salva —
independente de qual das duas formas do passo 3 foi usada.
- Se, em algum momento, abrir uma conversa interativa normal (não agendada)
e pedir pra rodar a mesma lógica manualmente, a ferramenta funciona sem
pedir aprovação nenhuma — sugerindo que a aprovação concedida fica presa
à sessão em que foi dada, e cada disparo agendado cria uma sessão nova
(confirmei isso comparando sessionIds distintos a cada execução da mesma
tarefa).
Resultado no meu ambiente: uma tarefa com cron de 30 em 30 minutos ficou 18h
seguidas sem completar nenhum ciclo com sucesso (presa nesse loop de
aprovação), enquanto outras tarefas agendadas no mesmo período, sem
ferramentas de escrita, continuaram rodando normalmente.
Claude Model
Sonnet (default)
Is this a regression?
No, this never worked
Last Working Version
_No response_
Claude Code Version
v2.1.168
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
Windows Terminal
Additional Information
_No response_