Skip to content

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

Open

Description

@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.

Activity

  1. github-actions commented on Dec 26, 2025

    @github-actions

    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.

  2. shaanmajid commented on Dec 30, 2025

    @shaanmajid
    Author

    This is still occurring as of version 2.0.76

  3. aaronjensen commented on Jan 5, 2026

    @aaronjensen

    This also impacts Tmux's automatic-rename capability

  4. PaulRBerg commented on Jan 14, 2026

    @PaulRBerg

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

    Image

  5. shaanmajid commented on Jan 14, 2026

    @shaanmajid
    Author

    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.

  6. PaulRBerg commented on Jan 14, 2026

    @PaulRBerg

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

    Image

  7. shaanmajid commented on Jan 14, 2026

    @shaanmajid
    Author

    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).

  8. 8 remaining items

  9. mattwilkinsonn commented on Apr 2, 2026

    @mattwilkinsonn

    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.

  10. joshmedeski commented on Apr 2, 2026

    @joshmedeski

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

  11. davidchambers commented on Apr 28, 2026

    @davidchambers

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

  12. brian-deane-gusto commented on Apr 28, 2026

    @brian-deane-gusto

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

  13. Dithy-Balaji-Official commented on May 3, 2026

    @Dithy-Balaji-Official

    +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.

  14. balazserdeszlogmein commented on May 14, 2026

    @balazserdeszlogmein

    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.

  15. FrankLedo commented on Jun 6, 2026

    @FrankLedo

    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.

  16. rmlarsen commented on Jun 7, 2026

    @rmlarsen

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

  17. blwfish commented on Jun 24, 2026

    @blwfish

    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.

  18. blwfish commented on Jun 24, 2026

    @blwfish

    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.

  19. lubos-dataplaza commented on Aug 29, 2026

    @lubos-dataplaza

    Still the same and really annoying for all reasons mentioned here in comments.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:packagingbugSomething isn't workinghas reproHas detailed reproduction stepsplatform:macosIssue specifically occurs on macOS

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions