Repository navigation
[Codex App][Goals] File-backed Goal prematurely completes after reading goal-objective.md instead of executing the actual task #53814
Description
What version of the Codex App are you using (From “About Codex” dialog)?
OpenAI.Codex (Windows MSIX package): 26.1007.2314.0 About ChatGPT (Powered by Codex & OWL): 26.1007.21434 (released October 9, 2026)
What subscription do you have?
ChatGPT Plus
What platform is your computer?
Microsoft Windows 10 Enterprise LTSC 21H2, version 10.0.19044 (build 19044), x64
What issue are you seeing?
Summary
Codex Desktop intermittently marks a file-backed Goal as complete after reading goal-objective.md, without performing the substantive user task stored in that file.
The failure is confirmed by the original Codex session JSONL: the agent called update_goal(status="complete"), the tool confirmed the transition, and the agent stopped despite the actual task being unfinished.
A separate successful control session using the same file-backed objective mechanism behaved correctly and continued executing the substantive task for approximately 21 minutes before completing the Goal.
This is an intermittent premature Goal-completion bug. The exact root cause has not been established.
Observed behavior
The original user objective required a multi-stage technical investigation, experiments, validation, and a final report.
Codex represented the persistent Goal using an internal transport instruction:
Read the Codex goal objective file at [REDACTED]/goal-objective.md before continuing.
After loading the objective file and performing limited preliminary operations, the agent queried its Goal state and then marked the Goal complete.
Its final response indicated that the file-reading objective had been completed. However, the substantive investigation and required deliverables were not finished.
The completion was not merely a misleading text response: the actual Goal-management tool confirmed status="complete".
Evidence: premature completion
Extracted directly from the failing Codex session JSONL. All timestamps below are UTC.
| Timestamp | JSONL line | Event | Result |
|---|---|---|---|
| 2026-10-13 23:06:35.530 | 14 | thread_goal_updated |
active, 0 tokens, 0 seconds |
| 2026-10-13 23:06:38.378 | 17 | Objective-file tool call | Initial objective processing |
| 2026-10-13 23:06:49.966 | 32 | Objective-file tool call | Further objective processing |
| 2026-10-13 23:06:53.860 | 36 | get_goal call |
Goal state queried |
| 2026-10-13 23:06:55.644 | 39 | get_goal result |
active, 19,856 tokens, 14 seconds |
| 2026-10-13 23:06:59.844 | 43 | update_goal call |
status="complete" |
| 2026-10-13 23:06:59.905 | 45 | update_goal result |
complete, 21,399 tokens, 24 seconds |
| 2026-10-13 23:07:05.038 | 51 | task_complete |
Execution stops |
The get_goal and update_goal calls were identified from actual tool-call records, and their results were matched using tool-call identifiers.
No completed substantive research deliverables existed at the point of this Goal completion.
Evidence: successful control
A separate file-backed Goal session did not exhibit premature completion.
| Timestamp | JSONL line | Event | Result |
|---|---|---|---|
| 2026-10-13 23:29:23.765 | 14 | thread_goal_updated |
active, 0 tokens, 0 seconds |
| 2026-10-13 23:29:26.698 | 17 | Objective-file tool call | Objective processing |
| 2026-10-13 23:29:34.515 | 30 | task_complete |
Initial turn finishes |
| 2026-10-13 23:29:38.999 | 38 | Other tool call | Substantive execution continues |
| 2026-10-13 23:50:15.614 | 568 | update_goal call |
status="complete" |
| 2026-10-13 23:50:16.557 | 571 | update_goal result |
complete, 186,770 tokens, 1,252 seconds |
| 2026-10-13 23:50:21.965 | 577 | task_complete |
Final turn finishes |
The successful control contained multiple intermediate turns and 64 non-Goal tool calls classified in the sanitized trace before the final Goal completion.
Key difference
- Failing session: Goal marked complete after 24 seconds of reported Goal usage, before completing the user task.
- Successful control: Goal remained in progress for approximately 21 minutes, with substantive tool-driven work before completion.
The token counts and durations above are values reported by the Goal-management tool. They are not independently verified billing figures.
The two sessions establish a behavioral difference, not a confirmed explanation for that difference.
Impact
A persistent Goal can incorrectly transition to complete even though its actual completion criteria remain unsatisfied.
This undermines the reliability of long-running, autonomous workflows because Codex can report success and stop working without producing the requested results.
The observed defect is distinct from an ordinary task_complete event that ends an individual turn while the Goal remains active.
What steps can reproduce the bug?
- Open Codex Desktop and start a new Goal.
- Provide a large, substantive objective requiring multiple operations and verifiable deliverables, such as investigating a software problem, running experiments, validating results, and producing a report.
- Use an objective large enough for Codex to transport it through an internal
goal-objective.mdattachment. - Allow the agent to load and read the objective file.
- Observe Goal-state transitions and whether the agent continues the substantive task.
Observed intermittent failure: After loading the objective and carrying out only preliminary steps, the agent calls update_goal(status="complete") and reports completion of the file-reading instruction rather than the user's actual objective.
Reproduction status: One failure has been confirmed using the original session JSONL, with a separate successful control session. Additional synthetic attempts did not reliably reproduce the failure.
The sanitized evidence contains original JSONL line numbers, timestamps, Goal tool-call/result pairs, and reported usage counters. Raw session identifiers, private objectives, source code, and local filesystem paths are intentionally omitted from public attachments.
A deterministic minimal reproduction and the exact triggering condition are not yet known.
What is the expected behavior?
A file-backed Goal must preserve the substantive user objective and its completion criteria.
Reading goal-objective.md should be treated only as an initialization step, not as successful completion of the Goal.
The agent should continue executing the requested investigation, validation, and deliverables until the actual completion criteria are satisfied or an explicit blocking condition requires user intervention.
update_goal(status="complete") should only be used after the substantive objective has been fulfilled.
Intermediate task_complete events should remain separate from completion of the persistent Goal.
In particular, successful execution of the internal instruction to read the objective file must never, by itself, satisfy a multi-stage user Goal.
Additional information
Possible cause — not confirmed
The agent or Goal-management mechanism may be treating the internal file-loading instruction as the effective Goal completion criterion rather than evaluating the actual substantive objective.
Potential investigation areas include:
- File-backed objective materialization and persistence.
- The distinction between the transport instruction and the substantive Goal.
- The interaction between Goal state, tool results, and completion decisions.
- Validation of
update_goal(status="complete")against the original objective.
No specific internal root cause has been demonstrated.
Suggested regression test
Create a large multi-stage Goal transported through goal-objective.md, with verifiable required deliverables.
After reading the objective file, verify that the Goal remains active and the agent continues working until those deliverables are complete.
Run the test repeatedly because the observed failure is intermittent.
Sanitized evidence
Two metadata-only timelines are attached:
FAILED-public.txt: the initial failing sequence, ending at the first prematuretask_complete.SUCCESS-public.txt: a successful file-backed Goal session through normal completion.
The evidence contains timestamps, event classifications, original JSONL line numbers, Goal statuses, matched call references, and usage counters.
No full conversation messages, original objective text, command bodies, source code, usernames, absolute paths, or attachment UUIDs are included.
Related issues
- [Codex Desktop] Attachment wrapper is stored as the sidebar title instead of a localized generated title #42012 — file-backed Goal attachment wrapper handling.
- Goal ignores an explicit human-hours pause and burns 1.26M tokens in 12 no-op turns #41831 — Goal continuation and lifecycle behavior.
- Goal can be silently narrowed and completed while the user's requested outcome remains unfinished #39715 — related premature Goal completion, but involving scope narrowing rather than completion of a file-backed objective-loading step.
These issues may involve related lifecycle mechanisms, but a shared root cause has not been established.
Activity