[Bug] macOS Activity Monitor shows version number (e.g. '2.0.53') instead of 'claude' as process name

Open 💬 22 comments Opened Nov 26, 2025 by shaanmajid

Environment

  • Platform: macOS (Darwin 25.1.0, Apple Silicon)
  • Installation method: Native installation via bun
  • Claude Code version: 2.0.53

Description

In macOS Activity Monitor, Claude Code processes appear with just the version number (e.g., 2.0.53) as the process name instead of something recognizable like claude or Claude Code.

This makes it difficult to:

  • Quickly identify Claude Code processes in Activity Monitor
  • Distinguish Claude Code from other applications
  • Monitor resource usage at a glance

Root Cause

The native installation stores versioned binaries at:

~/.local/share/claude/versions/2.0.53  (actual Mach-O binary)
~/.local/bin/claude -> ~/.local/share/claude/versions/2.0.53  (symlink)

macOS Activity Monitor uses proc_pidpath() from libproc.dylib to get process names, which resolves symlinks and returns the actual binary path. Since the binary filename is literally 2.0.53, that's what Activity Monitor displays.

Reproduction

  1. Install Claude Code via native installation
  2. Run claude in terminal
  3. Open Activity Monitor
  4. Search for "claude" - no results
  5. Search for the version number (e.g., "2.0.53") - Claude Code processes appear

Expected Behavior

Activity Monitor should show a recognizable name like claude, claude-code, or claude-2.0.53.

Potential Fix

One low-disruption option would be to rename the versioned binary files from {version} to claude-{version}:

~/.local/share/claude/versions/claude-2.0.53

This would:

  • Make processes show as claude-2.0.53 in Activity Monitor (recognizable + shows version)
  • Require minimal changes (just the filename template in build/update logic)
  • Not affect any user-facing paths (symlink remains ~/.local/bin/claude)

However, there may be other approaches the team prefers.

Additional Context

Verified via:

$ readlink -f ~/.local/bin/claude
/Users/.../.local/share/claude/versions/2.0.53

$ python3 -c "
import ctypes, os
libproc = ctypes.CDLL('/usr/lib/libproc.dylib')
# ... proc_pidpath() returns the resolved path
"
# Returns: /Users/.../.local/share/claude/versions/2.0.53

This appears to be unreported - searched existing issues for Activity Monitor, process name/title, and related terms without finding a match.

View original on GitHub ↗

22 Comments

github-actions[bot] · 6 months ago

This issue has been inactive for 30 days. If the issue is still occurring, please comment to let us know. Otherwise, this issue will be automatically closed in 30 days for housekeeping purposes.

shaanmajid · 6 months ago

This is still occurring as of version 2.0.76

aaronjensen · 6 months ago

This also impacts Tmux's automatic-rename capability

PaulRBerg · 6 months ago

Still occurring as of v2.1.7 - and it's a bug that makes observability difficult especially when running multiple Claudes.

!Image

shaanmajid · 6 months ago

I would recommend leaving a /bug in Claude Code. It's unclear to me how often GitHub issues are actually reviewed, but from seeing the attitudes of the Claude Code team on X, they seem to very aggressively monitor the native feedback and bug reports.

PaulRBerg · 6 months ago

I don't see any /bug command in Claude Code? @shaanmajid

!Image

shaanmajid · 6 months ago

I think it's disabled if you have CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 or similar settings (I keep the same on and briefly remove it to submit bugs and re-enable afterwards lol).

akkylab · 5 months ago

Still occurring in 2.1.17

joshmedeski · 4 months ago

tmux pane_current_command also affected

This also breaks tmux's automatic-rename-format and any plugin that relies on pane_current_command to identify the running process.

On macOS, tmux uses proc_name() which resolves the symlink at ~/.local/bin/claude to the versioned binary (e.g. ~/.local/share/claude/versions/2.1.45), so pane_current_command returns 2.1.45 instead of claude.

This means plugins like tmux-nerd-font-window-name can't match the process to show a Claude icon. Even if the binary were renamed to claude-2.1.45, plugins still couldn't match on claude without prefix/pattern matching support.

The ideal fix from the tmux perspective would be a binary named claude (with version tracked via an internal mechanism rather than the filename).

idriss-mortadi · 4 months ago

Still present. It is probably because they are using symlinks when using the custom installer instead of npm:

❯ which claude
/Users/idriss.mortadi/.local/bin/claude

~
❯ l /Users/idriss.mortadi/.local/bin/
...
24 Feb 10:20 claude -> /Users/idriss.mortadi/.local/share/claude/versions/2.1.52
...
dweekly · 4 months ago

Confirmed still happening in 2.1.62.

Root cause is that the binary is ~/.local/share/claude/versions/2.1.62

Renaming the binary to claude-2.1.62 would resolve this issue.

n0nick · 4 months ago

FWIW I'm seeing this in 2.1.74, just reported via /bug and it generated this for a Github issue:

Bug Description
tmux windows show "2.1.74" instead of "claude" because the binary at ~/.local/share/claude/versions/2.1.74 is named after the version. tmux
resolves the symlink and uses the filename as the window title. Same root cause as https://github.com/anthropics/claude-code/issues/12433.

Environment Info

  • Platform: darwin
  • Terminal: tmux
  • Version: 2.1.74
  • Feedback ID: df8a431c-130c-44dc-a29b-9a5220b99ff8

Errors

[{"error":"Error: NON-FATAL: Lock acquisition failed for /Users/sagie.maoz@viam.com/.local/share/claude/versions/2.1.74 (expected in multi-process scenarios)\n    at kvT (/$bunfs/root/src/entrypoints/cli.js:2644:2025)\n    at Cbq (/$bunfs/root/src/entrypoints/cli.js:2644:1169)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-03-13T14:28:08.449Z"}]
mattwilkinsonn · 3 months ago

Some more context - this only happens with the binary installed by the install script curl -fsSL https://claude.ai/install.sh | bash. If you install via homebrew -> brew install --cask claude-code the process is called claude.

But the homebrew installation is constantly lagging behind because the pace of updates + slow homebrew formula updates, so claude is always complaining it's out of date and telling you to run brew upgrade claude-code, when homebrew doesn't have a new version yet.

Anyone know how we get someone to triage this? Or just get lucky with the 8k+ open issues on this repo, lol.

joshmedeski · 3 months ago

@mattwilkinsonn that's why I switched to the direct install (brew is often behind on releases)

davidchambers · 2 months ago

tmux users may be interested in the [workaround][1] shared by @brian-deane-gusto.

[1]: https://github.com/anthropics/claude-code/issues/49852#issuecomment-4328517818

brian-deane-gusto · 2 months ago

Behavior is definitely still present though, would love a fix!

Dithy-Balaji-Official · 2 months ago

+1 - this isn't only a cosmetic Activity Monitor / tmux title issue. The versioned binary path also invalidates macOS TCC Automation grants on every upgrade, which silently breaks unattended automation.

Concrete operational impact: I run scheduled cron flows that drive Chrome via claude --chrome plus an AppleScript wrapper for window/tab housekeeping (health probe, stale-tab cleanup, post-flow window close). After every Claude upgrade, the Chrome Automation grant goes stale because TCC sees the new versioned binary as a new app. The cron-launched wrapper hits a tell application "Google Chrome" health probe, macOS queues a TCC consent dialog that no one is at the keyboard to click, and the entire pipeline silently fails. Last upgrade cost me ~2 days of failed GLG scans before I noticed.

Confirming @dweekly's earlier finding: my install is also at ~/.local/share/claude/versions/<version>/claude with ~/.local/bin/claude symlinked in. macOS TCC resolves the symlink → new file → new TCC identity → reauth required.

Workaround for anyone hitting this on automated/headless setups: brew install --cask claude-code puts the binary at a stable Homebrew path and the TCC grant survives upgrades. Tradeoff is the Homebrew formula lags upstream by days.

Real fix would be either (a) install the binary at a stable path with a sibling versions/ dir (so the executed path doesn't change per release), or (b) codesign every release with a stable Designated Requirement so TCC treats them as the same identity even at different paths.

balazserdeszlogmein · 2 months ago

Please fix this, this is going against all norms on macOS. Process names should be static among versions and they should be a string that resembles the application. This abnormal name makes it very hard to perform any governance or forensic investigation on Claude Code.

FrankLedo · 1 month ago

Same root cause bites harder in the macOS Automation/TCC permission dialog, where it crosses from cosmetic into a security concern.

On 2.1.166, launching a background job triggered:

"2.1.166" wants access to control "Terminal.app". Allowing control will provide access to documents and data in "Terminal.app", and to perform actions within that app.

No "Claude Code", no developer identity — just a bare semver requesting the power to drive Terminal (effectively arbitrary command execution). To a careful user this is indistinguishable from malware, and the correct security instinct is to click Don't Allow and start hunting for what's compromising the machine. I did exactly that before tracing the process back to ~/.local/share/claude/versions/2.1.166.

It compounds with the versioned-install-path problem (#46859 / #30608): every auto-update is a new binary identity to TCC, so the scary unnamed prompt re-appears on each update even after you've granted it once.

Fix is the same as this issue asks — a stable CFBundleName/CFBundleDisplayName (and ideally a version-independent TCC-facing binary path) so both Activity Monitor and the permission dialogs read "Claude Code" instead of a version string.

rmlarsen · 1 month ago

Seeing the same on Linux (e.g. in top). +1 to fixing this.

blwfish · 21 days ago

Still seeing this on macOS 15.7.1 (upgraded from 15.5 today). The dialog reads "claude.app" would like to access data from other apps and reappears repeatedly even after clicking Allow. Full Disk Access is granted for all three claude CLI binaries and the Claude desktop app.

blwfish · 21 days ago

Second symptom of the same root cause: the Local Network permission list (Privacy & Security → Local Network) accumulates a new 'claude' entry on every auto-update, because each versioned binary is a fresh TCC identity. I currently have 18+ duplicate 'claude' entries in Local Network, all enabled. The same happens in Full Disk Access. The net effect is that every update triggers a new permission dialog, and the permission panels become unusable garbage. This won't be fixed by clicking Allow — it will keep accumulating until the binary has a stable identity.