Codex App crashes when internal Git worker runs out of memory on a large staged change set
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 30/100
- Issue type
- Bug
- Clarity
- Needs clarification
- Activity status
- Quiet
- Tech stack
- git, node.js
- Domain
- desktop, devtools, performance
Research direction
Start with the internal Git Node/V8 worker and the background Git status refresh and staged/source-control diff paths described in the report. Reproduce with a large staged repository while monitoring the worker's memory behavior, then determine which operation grows unboundedly. Done means the app remains memory-bounded and an oversized result produces truncation, pagination, skipped expensive work, or a recoverable error instead of aborting.
Written by the indexing model from the issue text.
Description
What version of the Codex App are you using (From “About Codex” dialog)?
26.715.31925 (build 5551)
What subscription do you have?
ChatGPT Pro 20x
What platform is your computer?
Darwin 25.5.0 arm64 arm
What issue are you seeing?
The Codex App hard-crashed twice while the same unusually large local Git repository was open. Both macOS crash reports have the identical signature.
This was a full application self-abort, not a renderer crash, network disconnect, solver failure, or macOS memory-pressure termination.
In both reports:
- exception: EXC_CRASH / SIGABRT
- termination: SIGNAL, Abort trap: 6
- faulting thread: 54, named "git"
- termination.byProc: ChatGPT
- relevant stack:
__pthread_kill
pthread_kill
abort
node::OOMErrorHandler(char const*, v8::OOMDetails const&)
v8::ToExternalPointerTag(unsigned short)
v8::ExternalMemoryAccounter::Update(v8::Isolate*, long long)
cppgc::internal::MakeGarbageCollectedTraitInternal::Allocate(...)
node::worker::MessagePort::OnMessage(...)
uv_run
node::worker::Worker::Run()
The internal Git Node/V8 worker therefore entered an out-of-memory path while accounting for or allocating external memory. Node then called abort(), terminating the entire Codex App.
The repository state measured during the post-crash investigation was:
- approximately 2.8 GB and 82,398 files
- 3,582 tracked status entries
- 3,579 staged paths
- 3,890 untracked files
- 7,472 total status entries
- staged diff: 3,579 files, 195,793 additions and 1,132,253 deletions
- 2,681 staged deletions, including approximately 2,675 files from a previously tracked .venv
Git itself reported that exhaustive rename detection was skipped because there were too many files.
The crash reports do not symbolicate the intervening JavaScript/JIT frames, so they cannot establish whether the unbounded operation is specifically status enumeration, diff generation, rename detection, or another Git integration task.
What steps can reproduce the bug?
This is the best available high-fidelity reproduction. It has reproduced naturally twice, but it is not yet a minimal deterministic test case.
- On a 16 GB Apple-silicon Mac, install Codex App 26.715.31925 build 5551.
- Open a local Git repository of approximately 2.8 GB containing about 82,000 files.
- Stage approximately 3,579 paths, including:
- about 2,681 deletions;
- about 2,675 deleted files from a tracked Python .venv;
- 775 additions;
- 60 renames;
- approximately 1.13 million deleted lines and 196,000 added lines.
- Add approximately 3,890 untracked files, producing about 7,472 Git status entries in total.
- Open this repository as the active local project in Codex App and leave the changes uncommitted.
- Use the repository normally, including Git status refreshes and staged/source-control diff views.
- Leave the project open for repeated background Git refreshes.
Observed result: the complete Codex App process eventually aborts. The generated macOS .ips report shows SIGABRT from node::OOMErrorHandler on the internal thread named "git".
The two observed crashes occurred after approximately 3 hours 21 minutes and 4 hours 13 minutes of process uptime.
Session ID: not applicable; this is a process-level Git integration crash and occurred across normal app usage.
What is the expected behavior?
Git integration should remain memory-bounded, even for unusually large repositories or change sets.
If a status or diff exceeds a safe threshold, Codex should truncate or paginate the result, skip expensive rename detection, or show a recoverable error.
An out-of-memory condition or failure in the auxiliary Git worker must not terminate the entire Codex App.
Additional information
Frequency:
- Two full-process crashes recorded in macOS Diagnostic Reports
- Crashes were separated by 5 hours 26 minutes 59.5 seconds
- 2/2 reports had the identical Git-worker OOM signature
Environment:
- MacBook Air Mac17,3
- Apple M5
- 16 GB RAM
- arm64
- macOS 26.5.2 build 25F84
Crash 1:
- Capture time: 2026-07-19 18:56:36.1683 +03:00
- Incident: 86121E77-2178-4CBC-BB60-1F925C6D57DA
- PID: 29646
Crash 2:
- Capture time: 2026-07-20 00:23:35.7003 +03:00
- Incident: D149DD22-ADB2-44B1-8383-64F3F54CD0A9
- PID: 77481
I can provide both original macOS .ips crash reports.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.5k
- Avg merge
- 1m
- Merged PRs (30d)
- 1k
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from openai/codex
-
enhancement remote
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
bug CLI windows-os
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
macOS sandbox blocks hw.optional.arm64 sysctl, causing Flutter to misdetect Apple Silicon as x64 Openbug CLI sandbox
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
bug CLI TUI
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
-
CLI config enhancement skills
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
kwakseongjae/auto-hwp#319 ·
-
area:cli bug filter-quality good first issue priority:medium
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
Difficulty 1/5 Under an hour Newbie friendliness 72/100
bevyengine/bevy#25861 ·
-
comp-datalake
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
ClickHouse/ClickHouse#121222 ·
-
A-linter
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
oxc-project/oxc#26863 ·