Claude Desktop 1.24012.9 (patch release 14)
Claude Desktop 1.24012.9 (patch release 14)
This release provides Claude Desktop version 1.24012.9 pre-patched for Linux.
Installation Options
Arch Linux (pacman Repository - recommended)
curl -fsSL https://patrickjaja.github.io/claude-desktop-extra/install-pacman.sh | sudo bash
sudo pacman -Syu claude-desktop-extraArch Linux (manual package)
# x86_64
sudo pacman -U https://github.com/patrickjaja/claude-desktop-extra/releases/download/v1.24012.9-14/claude-desktop-extra-1.24012.9-14-x86_64.pkg.tar.zst
# ARM64
sudo pacman -U https://github.com/patrickjaja/claude-desktop-extra/releases/download/v1.24012.9-14/claude-desktop-extra-1.24012.9-14-aarch64.pkg.tar.zstDebian/Ubuntu (APT Repository — recommended)
curl -fsSL https://patrickjaja.github.io/claude-desktop-extra/install.sh | sudo bash
sudo apt install claude-desktop-extraDebian/Ubuntu (manual .deb)
# x86_64
sudo apt install ./claude-desktop-extra_1.24012.9-14_amd64.deb
# ARM64
sudo apt install ./claude-desktop-extra_1.24012.9-14_arm64.debFedora/RHEL (RPM Repository — recommended)
curl -fsSL https://patrickjaja.github.io/claude-desktop-extra/install-rpm.sh | sudo bash
sudo dnf install claude-desktop-extraFedora/RHEL (manual .rpm)
# x86_64
sudo dnf install ./claude-desktop-extra-1.24012.9-14.x86_64.rpm
# ARM64
sudo dnf install ./claude-desktop-extra-1.24012.9-14.aarch64.rpmNixOS / Nix
nix run github:patrickjaja/claude-desktop-extraAppImage (Any Distro)
# x86_64
chmod +x Claude_Desktop-1.24012.9-x86_64.AppImage
./Claude_Desktop-1.24012.9-x86_64.AppImage
# ARM64
chmod +x Claude_Desktop-1.24012.9-aarch64.AppImage
./Claude_Desktop-1.24012.9-aarch64.AppImageUpdate existing AppImage (delta download — only changed blocks):
appimageupdatetool Claude_Desktop-*-x86_64.AppImage # Or from within the AppImage: ./Claude_Desktop-*-x86_64.AppImage --appimage-update
Checksums
| File | SHA256 |
|---|---|
| Arch pacman (x86_64) | f35533c278a7441c44143fe8a7c2adb835714ef28cf00ce0215f18070f2c94fc |
| Arch pacman (aarch64) | fb24567f75734dea2c32b0af26724b484199342cecc22f2b6d1969e7b5468187 |
| Tarball (x86_64) | bac937ed248e3291f91290a674f7c944b434102f89dd65e317732d83f594fe22 |
| Tarball (aarch64) | 4cbfa080b7ebb93b3b251c44da15d26fe2872aa6bb954e3f2bdfcc761c35359a |
| AppImage (x86_64) | 7e043478547f92d6fc20eeb0cfb824fc15fdeb867c450d5dc904ba68ce187497 |
| AppImage (aarch64) | cdf15c516a151512598db8ae09dc61a4338839192d46e305d05cad2826a2340e |
| Debian (amd64) | ac63c83cec87c1c03cf788b62f618d15ccf8e03aea60c3387794d2be5d0b0d85 |
| Debian (arm64) | 4a94a632f489ed434faad398ab320699c48899ac9e91fffc9655a7a6a6f61a67 |
| RPM (x86_64) | 72515eccf2eb2fc1ea095425f028edac1d8028dfc5bb88df350fa07d55ee2dc1 |
| RPM (aarch64) | f21226a07f90ae4870d833191598f79a42e036bf641821aa0a5fdb8e518f5417 |
Changes since last release
From CHANGELOG.md, 2026-08-03:
Launching from a panel or menu no longer freezes startx/xinit desktops
On a session started with startx/xinit instead of a display manager, launching Claude Desktop from a panel button or the applications menu suspended the entire desktop: the window mapped blank, nothing redrew, only the pointer and VT switching kept working. The desktop on such a session runs on a VT and shares one process group, and the app's Claude Code integration probes the user environment with an interactive login shell (bash -l -i -c '... env'). Bash's job-control init finds that shell in a background process group of its controlling terminal and raises SIGTTIN against the whole group - which on a startx session is xfce4-session, the window manager, the panel and everything else. Terminal launches were always fine, because there the launcher is the foreground job.
The launcher now detaches via setsid before exec, but only when it is genuinely a background job on a controlling terminal (tpgid exists and differs from pgid). Display-manager sessions (tpgid == -1) and foreground terminal launches (tpgid == pgid) are untouched - terminal users keep live output and Ctrl-C. On a detached launch the app's stdout/stderr now lands in ~/.cache/claude-desktop/stdout.log (2 MiB rotation) instead of an unreadable VT, which also makes issue reports from menu-launched sessions possible. CLAUDE_KEEP_TTY=1 restores the old behaviour.
Root-caused (down to the wchan do_signal_stop capture) and fixed by Marco Bucchiarone (@Eresy) in #213 - thanks!
Computer Use executor: remaining probe/timing exec calls converted to argument arrays
The residual shell-string execSync calls in js/cu_linux_executor.js now run through execFileSync with argument arrays: the systemd-detect-virt VM probe, the which-based command cache, the pgrep -x ydotoold daemon check, and the ydotool hold-key sleep. None of these carried attacker-controlled input (the model-supplied paths were already converted 2026-07-13), so this is defensive consistency, not a vulnerability fix. The now-unused _exec/_execBuf shell helpers are gone.
Contributed by @anupamme (#212) - thanks!
Post-merge follow-up: the PR also whitespace-split COWORK_SCREENSHOT_CMD into an execFileSync argument array, which would have broken quoted arguments and pipes in user templates (e.g. grim -g "{X},{Y} {W}x{H}" {FILE}). That variable is a user-supplied command template from the user's own environment - shell evaluation is its documented contract and carries no injection surface - so the follow-up commit restores it verbatim.