Scheduled tasks stall silently on permission prompts (no error, no notification); related unattended-run gaps
Summary
Scheduled tasks (desktop "Routines") stall silently when a run hits a permission prompt: the run's transcript simply ends after the tool_use with no tool_result, no error is surfaced to the model or the user, and notifyOnCompletion: true never fires. From the user's perspective the run just "died". We burned 3 scheduled runs (and hours of a paying Max user's time, on Fable 5 with heavy token consumption) diagnosing what turned out to be documented pause-on-permission behavior, because nothing in the product surfaced it.
Environment
- Claude Code desktop app on macOS (Darwin 25.5.0), Japanese UI
- Model: claude-fable-5 / claude-opus-4-8
- Scheduled tasks created via
mcp__scheduled-tasks__create_scheduled_task
Issues
- Silent stall on permission prompts in scheduled runs. A Bash call needing approval pauses the run, but: the paused state is not communicated (no notification, no entry in the run transcript, task shows
lastRunAtas if completed). Expected: surface "paused waiting for approval" to the task list, fire a notification, or (better) allow the model to receive an auto-deny with an explanation so it can report and finish. notifyOnCompletion: truenever notified for stalled runs (and their eventual termination). Subscriber session received nothing for 3 runs.- No
permissionMode/modelparameters oncreate_scheduled_taskMCP tool. Docs say tasks have a per-task permission mode and recommend DontAsk for unattended use, but the MCP tool cannot set it; it can only be set in the UI form. Same for model — unattended runs picked Sonnet while the project settings say"model": "opus"(project model setting appears to be ignored by scheduled runs). - Docs/UI terminology mismatch (i18n): docs and tool descriptions say the "Scheduled" sidebar section; the Japanese UI calls it 「ルーチン」. Cost us a round of confusion.
- claude-in-chrome
upload_imagefails withUnable to access message history to retrieve imagein desktop sessions (tested twice with fresh screenshot imageIds) — this breaks the documented capture→upload bridge. screenshot/zoomsave_to_disksaves to a path unreachable from the session (not under the project, scratchpad, or any Bash-readable location; the result did not include the saved path either). If save_to_disk is meant for user-message attachments only, the tool description should say so explicitly.
Impact
An automation-heavy user (daily unattended content pipeline) spent an evening and a large token budget on trial-and-error that better error surfacing would have prevented. Please prioritize (1)–(3): unattended workflows are a headline feature, and silent stalls undermine trust in them.
4 Comments
Found 3 possible duplicate issues:
This issue will be automatically closed as a duplicate in 3 days.
🤖 Generated with Claude Code
Additional verification for issue #5/#6 (tested live, desktop app, claude-fable-5):
mcp__claude-in-chrome__computerwithaction: screenshot, save_to_disk: truereturns only the imageId ("Successfully captured screenshot (1311x906, jpeg) - ID: ss_...") — no saved path in the result, despite the parameter description promising "Returns the saved path in the tool result". A filesystem-wide search (app support, caches, ~/.claude, Downloads, Desktop, /tmp, /private/var/folders) finds no file created.upload_imagewith a fresh imageId from the same session consistently fails withUnable to access message history to retrieve image(3 attempts across 2 sessions).Net effect: there is no working path from an in-browser capture to a file or a page upload in this environment, forcing OS-level screenshot workarounds. Note this is not a permissions issue — no permission prompt is ever raised for either call.
Thanks for reporting, this will be fixed next release.
This issue has been automatically locked since it was closed and has not had any activity for 7 days. If you're experiencing a similar issue, please file a new issue and reference this one if it's relevant.