v2.1.20 regression: High idle CPU usage (25-40%) on macOS

Resolved 💬 3 comments Opened Jan 27, 2026 by ryanmish Closed Jan 31, 2026

Description

Claude Code v2.1.20 exhibits consistently high CPU usage (25-40%) on macOS, even when the session is completely idle. This is a regression specific to v2.1.20 - older versions running on the same machine use near-zero CPU when idle.

Environment

  • Claude Code version: 2.1.20
  • OS: macOS 15.6.1 (Sequoia)
  • Hardware: Apple M1 Max, 10 cores, 32GB RAM
  • Shell: zsh

Evidence of Regression

CPU comparison across multiple Claude versions running simultaneously on the same machine:

| Version | PID | Current CPU | Status |
|---------|-----|-------------|--------|
| 2.1.12 | 18265 | 0.1% | Idle |
| 2.1.12 | 27162 | 0.4% | Idle |
| 2.1.14 | 58491 | 0.0% | Idle |
| 2.1.14 | 65051 | 0.1% | Idle |
| 2.1.17 | 1341 | 0.1% | Idle |
| 2.1.17 | 11539 | 0.3% | Idle |
| 2.1.20 | 32557 | 27.6% | Idle |

All older versions are at <1% CPU when idle. Only v2.1.20 shows high CPU.

CPU Samples During Idle

5 samples over 15 seconds while session was completely idle (no user interaction):

Sample 1: 29.7%
Sample 2: 36.7%
Sample 3: 24.8%
Sample 4: 33.9%
Sample 5: 27.4%

Average: ~30% CPU while doing nothing.

Process Info

62 open file descriptors
8 active TCP connections including:
- 160.79.104.10:https (Anthropic API?) x5 connections
- GitHub CDN
- Google services

Reproduction

  1. Update to v2.1.20
  2. Start a Claude Code session
  3. Wait for it to be idle (no commands running)
  4. Monitor with: ps aux | grep claude
  5. Observe ~25-40% CPU persisting during idle

Expected Behavior

Idle CPU should be minimal (<5%), consistent with older versions (2.1.12-2.1.17) which all show <1% when idle.

MCP Servers Configured

  • context7 (HTTP)
  • playwright (stdio via npx)
  • figma (HTTP)
  • supabase, n8n, stripe, wordpress, cloudflare

The older version processes also had MCP servers configured and still showed <1% CPU.

View original on GitHub ↗

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