[BUG] Desktop scheduled tasks lost ultracode in 2.1.289: "Ultracode is on" reminder skipped on scheduled-trigger turns

Status Open
Reported on v2.1.289
Maintainer reply None cached
Activity 0 comments · opened Oct 12, 2026

Since Claude Code 2.1.289 (desktop app update of 2026-10-06), desktop scheduled tasks no longer get ultracode, even with "ultracode": true in ~/.claude/settings.json. The ultra_effort_enter attachment ("Ultracode is on: …") is never added to a scheduled fire's turn, so the model never sees the instruction and doesn't orchestrate.

Environment: macOS, Claude desktop app 2.31226.1, bundled CLI 2.1.295 (first seen on 2.1.289). Local scheduled tasks in auto permission mode. ~/.claude/settings.json has "ultracode": true.

Evidence

Scheduled-fire transcripts from one machine, same settings throughout:

| CLI version | Origin of the fire's turn | Fires | Had "Ultracode is on" |
|---|---|---|---|
| 2.1.260–2.1.288 (2026-09-08 → 10-06) | {kind:"human"}, promptSource sdk | 298 | 298 |
| 2.1.289–2.1.295 (2026-10-06 → 10-12) | {kind:"task-notification", subkind:"scheduled-trigger"}, promptSource system | 45 | 0 |

The ultracode state itself still seems to be on. When the user types a follow-up into one of these runs (origin human), the full reminder appears on that turn.

Likely cause

From the 2.1.295 bundle (minified names, so they may differ):

  • The app now stamps fires with origin task-notification / scheduled-trigger.
  • The CLI sets skipAttachments for any origin other than human or auto-continuation (function u_(e){return e===void 0||e.kind==="human"||e.kind==="auto-continuation"}).
  • ultra_effort_enter is only built when isRegularUserPrompt is true: ld("ultra_effort_enter",()=>Promise.resolve(b?.isRegularUserPrompt?gPr(h,n):[])).

The workflow-authoring autoload, which is keyed on that attachment, is skipped along with it.

Steps to reproduce

  1. Set "ultracode": true in ~/.claude/settings.json.
  2. Create a desktop scheduled task with any prompt and let it fire on its schedule.
  3. In the run's transcript, the first user turn has origin scheduled-trigger and there is no ultra_effort_enter attachment.

Expected: scheduled fires honor "ultracode": true, as they did through 2.1.288.

Requested fix (any one)

  • Build ultra_effort_enter for scheduled-trigger turns.
  • Deliver fires with an origin that keeps attachments, such as auto-continuation.
  • Add a per-task ultracode/effort field. The task record already carries model, and effort would benefit too: fires currently run at the model's default effort because no --effort is passed.

Workaround in use: a UserPromptSubmit hook that matches prompts starting with <scheduled-task name=" and returns the reminder text as additionalContext. It only approximates ultracode: the text is sent once and isn't repeated every 10 turns.

View original on GitHub ↗