[BUG] Editing a scheduled task's permission mode via the "Edit routine" UI silently wipes one-time (fireAt) schedules (cron tasks unaffected)

Status Fixed / completed
Maintainer reply None cached
Activity 3 comments · opened Jul 8, 2026 · closed Jul 10, 2026

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?

Editing a scheduled task through the "Edit routine" ("Editar rotina") dialog in the sidebar — even when the only change made is toggling the permission mode to "Modo automático" (auto-approve) and/or picking a model, with no change to the schedule itself — silently discards the task's one-time fireAt timestamp on save, resetting the task to "schedule": "Manual only" / "enabled": false.

This only affects one-time (fireAt) tasks. A recurring (cronExpression) task edited the exact same way (same dialog, same auto-approve toggle, same save action) is completely unaffected and keeps firing on schedule with its cronExpression/nextRunAt intact.

The dialog gives no warning that saving will wipe the one-time trigger, and its schedule selector doesn't expose a "one-time" option to re-set afterward (only Manual / Hourly / Daily / Weekdays / Weekly / Custom) — so once wiped through the UI, a one-time task can't be restored through the UI at all. It has to be re-armed by calling update_scheduled_task with fireAt from an assistant/tool session.

What Should Happen?

Editing a task's execution/permission settings (auto-approve mode, model) should have no side effect on its trigger configuration:

  • Saving the dialog should preserve an existing fireAt for one-time tasks, the same way it already preserves cronExpression for recurring tasks.
  • If the dialog genuinely can't represent a one-time schedule, it should at minimum (a) show a read-only "runs once at <timestamp>" indicator so the value isn't silently discarded, or (b) warn before save that continuing will convert the task to manual-only and require it to be rescheduled via the tool.

Error Messages/Logs

None shown in the UI — the save appears to succeed silently with no warning. The only evidence of the change is the task's state via `list_scheduled_tasks` before/after (see Steps to Reproduce).

Steps to Reproduce

  1. Create a one-time scheduled task via create_scheduled_task with a future fireAt, e.g.:
create_scheduled_task({ taskId: "test-oneshot", fireAt: "2026-07-22T09:00:00-03:00", prompt: "...", description: "..." })
  1. (Control) Create a recurring task the same way with cronExpression: "0 8 * * *" instead of fireAt.
  2. Confirm both are alive via list_scheduled_tasks — both show enabled: true with the correct nextRunAt / fireAt / cronExpression.
  3. In the app sidebar, open the Scheduled/Routines section, find the one-time task, click Edit ("Editar rotina").
  4. In the dialog, change only the permission-mode dropdown to "Modo automático" (auto-approve) — do not touch Name/Description/Instructions/schedule. Optionally also pick a specific model. Click Save.
  5. Repeat step 5 on the recurring task (only toggle auto-approve/model, save).
  6. Call list_scheduled_tasks again.

Observed:

  • Recurring task: unchanged — enabled: true, cronExpression intact, nextRunAt still populated.
  • One-time task: "schedule": "Manual only", "enabled": false, the fireAt field is gone entirely from the tool output.

Workaround found: calling update_scheduled_task({ taskId: "test-oneshot", fireAt: "<same original ISO timestamp>" }) re-arms the one-time task (enabled: true again, correct nextRunAt restored) without reverting the auto-approve/model settings just chosen via the UI — verified by reopening the Edit dialog afterward and confirming "Modo automático" and the chosen model were still set. So the permission/model settings and the trigger schedule appear to live in independent state that a tool-based update_scheduled_task call doesn't clobber, but the UI dialog's save handler does clobber — specifically and only — the one-time trigger.

Claude Model

None

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

1.17377.1 (Claude Desktop app)

Platform

Anthropic API

Operating System

Windows

Terminal/Shell

Other

Additional Information

Reproduced entirely through the Claude Desktop GUI ("Rotinas"/Scheduled section → Edit routine dialog), not a terminal-driven repro.

Adjacent to but distinct from #72710 (one-time/cron tasks never firing at all from creation — different symptom, backing SKILL.md file never persisted) and #61456 (missing sidebar/"Run now" button) — filing separately since the root cause and repro here are specific: the task fires and persists fine, and is only destroyed when edited through the "Edit routine" dialog for an unrelated reason (permission mode / model).

View original on GitHub ↗

3 Comments

rpelevin · 3 months ago

One boundary I would make test-visible here is that schedule intent and execution/permission policy should be independent persisted fields.

For an edit to a routine, I would want a small update receipt before save:

  • task id and current revision;
  • previous trigger kind: one_time | cron | manual;
  • previous trigger ref: fireAt or cronExpression digest;
  • requested edit set: permission_mode, model, instructions, schedule;
  • trigger mutation: preserved | changed_by_user | cleared_with_explicit_confirm;
  • terminal outcome: schedule_preserved | blocked_before_deschedule | manual_only_after_confirm.

The negative control is exactly this repro: edit only permission mode and/or model on a one-time routine. The one-time fireAt should survive the save the same way cronExpression survives for recurring routines. If the UI cannot represent one-time schedules yet, it should render the existing fireAt as read-only and either preserve it or block save before silently converting the routine to manual-only.

That keeps "this run is approved to execute automatically" separate from "this run is still scheduled to happen." Changing the permission mode should not delete the pending execution intent unless the user explicitly changed the schedule.

I have not tested Claude Desktop or verified the source locally. This is only a state-boundary/test-shape pass on the issue as described.

MaxLeiter · 3 months ago

Hi,

This has been fixed and will be live shortly.

Thank you for reporting!

github-actions[bot] · 1 month ago

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.