High CPU usage and excessive idle wake-ups on empty chat page (V8 RequestInterrupt loop)

Resolved 💬 3 comments Opened Apr 7, 2026 by xyz347 Closed Apr 7, 2026

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

26.325.31654 (1272)

What subscription do you have?

Business

What platform is your computer?

Darwin 24.6.0 arm64 arm

What issue are you seeing?

Description

When opening the chat page in Codex (macOS), the application consumes significant CPU and causes excessive idle wake-ups, even when the conversation is completely empty.

This results in noticeable battery drain and the laptop heating up.

The issue disappears immediately when switching away from the chat page (e.g., to Settings), which suggests the problem is isolated to the chat UI.

What steps can reproduce the bug?

  1. Open Codex
  2. Navigate to a new empty chat page
  3. Do not input anything (no messages at all)
  4. Observe CPU usage and idle wake-ups
  5. Switch to another page (e.g., Settings)

What is the expected behavior?

  • An empty chat page should be essentially idle
  • CPU usage and wake-ups should remain near zero when no activity is happening

Additional information

Investigation / Technical Findings

Using sample on the main process shows a consistent call stack dominated by:

  • v8::Isolate::RequestInterrupt (very high frequency)
  • Event loop (CFRunLoopRun, mach_msg)

The call graph indicates that nearly all samples hit the same execution path, suggesting a tight loop or high-frequency interrupt mechanism.

Example pattern:

v8::Isolate::RequestInterrupt
→ v8::Message::GetLineNumber
→ node::PrincipalRealm::http2session_on_origin_function
→ CFRunLoopRun

Key observations:

  • The loop persists even when the chat is empty
  • No GPU usage spike (not a rendering issue)
  • No abnormal pmset wake reasons or sleep prevention assertions
  • Appears to be a user-space event loop / interrupt storm

---

Hypothesis

The chat page likely contains a high-frequency timer, event loop, or interrupt mechanism that continues running even in an idle/empty state.

Possible causes:

  • Unbounded setInterval / requestAnimationFrame
  • Streaming or polling logic not gated by activity
  • Excessive V8 interrupt requests (likely the main cause)

---

Impact

  • Significant battery drain
  • Laptop heating
  • Poor idle efficiency
  • Makes it impractical to keep Codex open on the chat page

---

Workarounds

  • Switching away from the chat page immediately resolves the issue
  • Using CLI instead of the UI avoids the problem entirely

---

Additional Notes

This issue reproduces consistently on an empty chat page, so it does not depend on:

  • conversation length
  • message content
  • streaming responses

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗