[BUG] Claude desktop (v1.20186.9) consumes ~70% CPU and ~2.4GB RAM on a MacBook Air M3 (16GB)

Open 💬 0 comments Opened Jul 14, 2026 by robertandrews

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

Summary

Claude desktop (v1.20186.9) consumes ~70% CPU and ~2.4GB RAM on a MacBook Air M3 (16GB) immediately after launching a single Claude Code session, even with minimal interaction. On a fanless machine, this causes sustained heat.

Environment

  • Machine: MacBook Air M3, 16GB RAM (Mac15,13)
  • macOS: 14.6 (23G80)
  • Claude desktop: 1.20186.9
  • Claude Code: 2.1.209

Observed resource usage

Measured via Activity Monitor and ps aux within seconds of starting a new Claude Code session (before any substantial work):

| Component | CPU% | RAM | Description |
|---|---|---|---|
| Claude Helper (Renderer) | ~43% | 565MB | Electron renderer — the main hog |
| Claude Helper (GPU) | ~19% | 111MB | GPU compositing with 2 CVDisplayLink threads |
| Claude (Main) | ~4% | 258MB | Electron main process |
| Virtual Machine Service | ~1% | 867MB | Full Linux VM sandbox (rootfs.img + sessiondata.img, 10GB each) |
| claude (CLI subprocess) | ~4% | 394MB | Claude Code process |
| 13 other helpers | ~0% | ~200MB | MCP servers, disclaimer processes, utility renderers |
| Total | ~70% | ~2.4GB | |

Activity Monitor's Energy tab shows Claude's 12-hour energy impact at 118.04 (second only to Brave Browser), with App Nap disabled.

Process sampling analysis

Used sample to profile the three heaviest Claude processes for 3 seconds each. Key findings:

Renderer (PID 1124, ~43% CPU)

  • Main thread is actively running V8 JavaScript, including deeply recursive calls through node::crypto::GetDigestImplementation (10+ levels of recursion visible in the sample).
  • 4 DedicatedWorker threads are all parked on mach_msg2_trap, waiting for messages.
  • Compositor thread is actively polling via kevent64, performing compositing work even though the UI is essentially static text.
  • 489 idle wake-ups reported by Activity Monitor — extremely high for a chat window.

GPU process (PID 1101, ~19% CPU)

  • Two CVDisplayLink threads firing callbacks at display refresh rate. Each frame triggers compositing work through CVDisplayLink::performIO → Electron Framework rendering pipeline, even when nothing on screen has changed.
  • VizCompositorThread doing CFRunLoop work, processing display sources at refresh rate.

Virtual Machine Service (PID 1137, ~1% CPU, 867MB RAM)

  • Apple Virtualization.framework running a full Linux VM with two 10GB sparse disk images.
  • Always running while Claude Code is active, consuming 867MB even when no tools are executing.

Impact

On a fanless MacBook Air, ~70% sustained CPU causes the chassis to run noticeably hot. The 12-hour energy impact (118.04) suggests this is not transient — it persists as long as Claude is open. With 2.4GB of 16GB consumed, memory pressure also forces macOS's compressor to work harder, adding further CPU load.

What Should Happen?

A chat application displaying mostly static text should:

  • Drop to near-zero CPU when idle (no typing, no streaming response)
  • Not render frames at display refresh rate when the UI hasn't changed
  • Not perform recursive crypto digest operations in the renderer at idle
  • Use App Nap when the window is not focused

Error Messages/Logs

Steps to Reproduce

  1. Open Claude desktop on a MacBook Air M3 (16GB)
  2. Start a single Claude Code session
  3. Observe CPU in Activity Monitor — Claude Helper (Renderer) will be at 40%+ immediately
  4. Check Energy tab — no App Nap, high 12-hour power impact

Claude Model

None

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

1.20186.9

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Terminal.app (macOS)

Additional Information

_No response_

View original on GitHub ↗