openai / openai/codex

[macOS][Codex App] Scheduled tab can show a stale prompt after automation_update

Open
#39,899 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

app automations bug
Dominant language
Rust
Stars
125k
Forks
19.4k
PR merge metrics
PR metrics pending

Description

What version of the Codex App are you using (From “About Codex” dialog)?

26.818.31338

What subscription do you have?

ChatGPT Pro Lite x5

What platform is your computer?

Darwin 27.0.0 arm64 arm

What issue are you seeing?

A heartbeat scheduled task prompt can diverge between the Scheduled tab and its persisted automation.toml after the task is updated from a Codex thread through the built-in automation_update tool.

The update tool reported success. $CODEX_HOME/automations/<automation-id>/automation.toml immediately contained the new Markdown report format. Later, copying the complete prompt from the Scheduled tab returned the previous report format.

No error or stale-data warning appeared, and the task remained Active. This leaves the user unable to tell which prompt is authoritative or which prompt the next scheduled run will execute.

What steps can reproduce the bug?
  1. Create an active heartbeat scheduled task attached to an existing local Codex thread.
  2. Open the task in the Scheduled tab.
  3. From the attached thread, ask Codex to update only the task prompt through the built-in automation_update tool while preserving the task ID, name, status, recurrence rule, and target thread.
  4. Confirm that the tool reports Updated automation in the app.
  5. Read $CODEX_HOME/automations/<automation-id>/automation.toml and confirm that its prompt field contains the new text.
  6. Return to the same task in the Scheduled tab and copy the complete displayed prompt.
  7. Compare the two values. In this case, the Scheduled-tab copy contained the old reporting block while automation.toml contained the new block.

Observed timeline on 2026-08-21 (local time):

  • 01:45:56: automation.toml was updated by the built-in automation tool.
  • 01:49:55: the Scheduled task detail visibly showed the new Markdown-formatted suffix.
  • 02:08:40: copying the full prompt from the Scheduled tab produced the old report format shown above.

No manual edit was made to automation.toml.

What is the expected behavior?

After automation_update succeeds, every Scheduled-tab view or editor for that automation should invalidate stale cached data and display the exact persisted prompt.

If an in-memory draft conflicts with a newer saved value, the app should show an explicit conflict or unsaved-draft warning instead of silently displaying the older prompt.

The task should have one clearly authoritative prompt, and the UI should make clear which exact value the next scheduled run will execute.

Additional information

Environment:

  • Codex App version: 26.818.31338 (build 6892)
  • Platform: Darwin 27.0.0 arm64 arm
  • Automation kind: heartbeat attached to an existing local thread
  • Automation status: Active
  • Schedule: daily at 1:00 AM
  • Thread ID omitted for privacy

Possible area to investigate: invalidation of the Scheduled-tab/list query cache when an automation is updated through the agent-facing automation_update path rather than through the Scheduled editor itself.

Possibly related but not identical: #23895 reports automation UI state failing to rehydrate while definitions remain on disk.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the agent-facing automation_update path and the Scheduled tab's data refresh around $CODEX_HOME/automations//automation.toml. Reproduce the update and compare the persisted prompt with the copied Scheduled-tab value. Done means the tab reflects the persisted prompt after updates, or clearly warns when an unsaved draft conflicts with it.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
desktop
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.