Claude Desktop 1.17377.2
This release provides Claude Desktop version 1.17377.2 pre-patched for Linux.
Installation Options
Arch Linux (AUR)
yay -S claude-desktop-binDebian/Ubuntu (APT Repository — recommended)
curl -fsSL https://patrickjaja.github.io/claude-desktop-bin/install.sh | sudo bash
sudo apt install claude-desktop-binDebian/Ubuntu (manual .deb)
# x86_64
sudo apt install ./claude-desktop-bin_1.17377.2-1_amd64.deb
# ARM64
sudo apt install ./claude-desktop-bin_1.17377.2-1_arm64.debFedora/RHEL (RPM Repository — recommended)
curl -fsSL https://patrickjaja.github.io/claude-desktop-bin/install-rpm.sh | sudo bash
sudo dnf install claude-desktop-binFedora/RHEL (manual .rpm)
# x86_64
sudo dnf install ./claude-desktop-bin-1.17377.2-1.x86_64.rpm
# ARM64
sudo dnf install ./claude-desktop-bin-1.17377.2-1.aarch64.rpmNixOS / Nix
nix run github:patrickjaja/claude-desktop-binAppImage (Any Distro)
# x86_64
chmod +x Claude_Desktop-1.17377.2-x86_64.AppImage
./Claude_Desktop-1.17377.2-x86_64.AppImage
# ARM64
chmod +x Claude_Desktop-1.17377.2-aarch64.AppImage
./Claude_Desktop-1.17377.2-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 |
|---|---|
| Tarball (x86_64) | cc3a7ebc1ed8776c47eceb495fae6ac76d554767bf60e9af6fa5954fcb732678
|
| Tarball (aarch64) | d1e1c1f5047b7b1ddf2d41de422cdb63056f457afd98d153b8bf3c22f446ec6c
|
| AppImage (x86_64) | 3393734e83b6fae5b285a998b2d7af56579cd93ad108debfa255f1761d57baeb
|
| AppImage (aarch64) | 0e8c9da5a70422e2375f5aedea7206d35cf9e566d3c7053a18005ec5ac0441b2
|
| Debian (amd64) | 18e293e421cc3beb41aa91bb3da57a84a553c3c26553fdbc3ffc2531fc6e9b1f
|
| Debian (arm64) | 8ff857ef9390f82d63ec37889c0d6b4070c8638a00812d80b0c42b07ef07f807
|
| RPM (x86_64) | 6d0f8ad83103827958d2e6762a527bcef53cc1675b085bbbb0a2560b0416556e
|
| RPM (aarch64) | 9dbc06a55c19ed158c5b3b7d04c35457bb73113cb8ad2eb09ddba4d6735bb914
|
Changes since last release
Packaging hygiene: complete dependency declarations + license file shipped in every package
Prompted by a community PKGBUILD comparison (thanks marcelvdh), audited our dependency declarations against the actual ELF linkage of every binary we ship (objdump -p | grep NEEDED on the Electron main binary, crashpad handler, bundled virtiofsd, and node-pty's pty.node) plus the official .deb's control file:
- AUR:
dependsgrown from 3 packages (alsa-lib gtk3 nss) to the full grounded list of 31. Notable additions most Electron PKGBUILDs miss:libcap-ng+libseccomp(linked by the bundled virtiofsd the official.debships),libsecret(dlopened by Chromium's keyring credential storage, invisible to linkage scans),systemd-libs(libudev), andgcc-libs(libstdc++ forpty.node). New optdepends:gnome-keyringandxdg-desktop-portal-gtk. Also added!emptydirs. - Our .deb:
Depends/Recommendsnow fully mirror the official control - added the trash-handling alternation (kde-cli-tools | ... | gvfs), the portal backend alternation (xdg-desktop-portal-gtk | -gnome | -kde), andgnome-keyring | kwalletd6 | kwalletd5. - RPM: added
libsecret,xdg-utils,xdg-desktop-portal(rpm's auto-requires scan catches linked sonames but not dlopen), plusSuggests: gnome-keyring. - License file: no package shipped one. The tarball now carries the official
.deb'susr/share/doc/claude-desktop/copyrightat its root, and every packager installs it: AUR to/usr/share/licenses/claude-desktop-bin/LICENSE, deb tousr/share/doc/claude-desktop-bin/copyright(Debian policy), RPM via%license, AppImage into the AppDir, Nix to$out/share/licenses/(guarded - the flake may pin an older tarball without the file). - Deleted dead
packaging/debian/control- the shipped.deb's control file is generated by a heredoc inpackaging/debian/build-deb.sh; the standalone file was an unused leftover that invited editing the wrong place. - Clarified why the official
.debbundles its ownvirtiofsd(and corrected a wrong comment infix_cowork_firmware_paths_linux.nimthat claimed a general bundled fallback): the capability probe uses the bundledresources/virtiofsdonly on Ubuntu 22.x (os-releasecheck - jammy's apt has no standalone Rust virtiofsd); on every other distro a system virtiofsd is required or Cowork reports "tools missing". Ourvirtiofsdoptdepends (Arch, found via our added/usr/lib/virtiofsdprobe path) and Recommends (deb/rpm) are therefore load-bearing and stay.
Upstream version bumps now release fully automatically; manual update flow becomes the failure path
Consequence of the .deb pivot: upstream maintains 1p Linux support and the patch strictness rules make the pipeline itself the arbiter (every sub-patch applies or the build fails loud), so the human-in-the-loop on the green path was removed. version-check.yml now dispatches build-and-release.yml in release mode on a new version (previously auto-PR mode, which needed a human merge plus a second manual dispatch). Green run → packages published, AUR pushed, README versions + Nix hash + .upstream-version committed, and the tracking issue closed automatically (new close-version-issue job). Red run → a new notify-version-issue-failure job comments on the tracking issue with the failed-run link; that comment is the signal to run /update <version>, where the first question per failing patch is now explicit: pattern moved (fix the regex) vs feature natively implemented upstream (remove the patch or convert to a regression guard). The auto_pr mode stays available as a manual conservative alternative. Docs realigned (CLAUDE.md Update Workflow + .upstream-version row, update-prompt.md, UPDATE-PROMPT-CC-INPUT-MANUAL.md, the /update skill, and the new-version issue template - which also lost its stale claude-cowork-service clone instructions). Known limit stated in the docs: a green build proves patches applied, not runtime correctness (#173 was remote-side); the guard is strict counts + positive assertions + smoke test, plus a spot-check after notable bumps.
Full patch sweep vs the official .deb: 43 of 44 patches earn their keep; 1 removed, 2 cleaned up
A 5-agent review of every patch against a fresh unpatched v1.17377.1 bundle (lens: "which patches still assume the old MSIX/Windows build?") confirmed the pivot cleanup is essentially complete. Outcomes:
fix_locale_paths_preremoved. The bootstrap bundle (index.pre.js) has zeroprocess.resourcesPathreferences, so the patch was a byte-identical no-op - deleted under the same delete-pure-no-op-guards policy as yesterday's removals. If upstream ever moves locale resolution into the bootstrap, it needs a new dedicated@patch-targetpatch (noted infix_locale_paths).fix_process_argv_renderersimplified. Dropped two dead fallback anchors (one matched a phantom.platform="win32"spoof pattern that no longer exists anywhere); the primaryexposeInMainWorldanchor is the only live path and still applies cleanly.fix_tray_icon_themeheader rewritten. The comment described the pre-v1.13576 win32-only ternary; it now documents the actual native Linux switch (ere()==="gnome"||shouldUseDarkColorspickingTrayIconLinux*.png) and why we deliberately override that heuristic (Linux trays are dark regardless of theme). Code unchanged.- Everything else verified KEEP: upstream v1.17377.1 still ships zero Linux Computer-Use backends, still gates browser tools / file dialogs / Visualize behind darwin/win32, and the profile/Quick Entry/theme features remain entirely ours. Two agent claims that patches were "fully upstreamed" (
fix_cross_device_rename,fix_utility_process_kill) were refuted by running the patch binaries against the fresh bundle - both still mutate (19 and 1 sites) and stay. - A follow-up sweep of the build infrastructure (scripts, CI, launcher) found the pivot equally clean - only ~40 lines of dead weight removed: the disabled
cowork-vm-servicesocket-cleanup block in the launcher and the matching noise filter insmoke-test.sh(both referenced the removed Go daemon), two stale MSIX-era comments, and CLAUDE.md's link tovalidate_and_fix_claude-setup-x64.md(an MSIX-era scratch file that was never tracked in git). Docs refreshed to match today's patch changes: README rows forenable_local_agent_modeandfix_tray_icon_theme, and the "What We Patch on Linux" section ofCLAUDE_FEATURE_FLAGS.md(7-key merger override, Patch 1b as regression guard, removed-spoofs note). - The ~15 GrowthBook force-flips in
enable_local_agent_modewere considered for removal now that the app reportslinuxhonestly - and ruled out with live evidence. The feature payload a real session fetches from/api/desktop/features(disk cache~/.config/Claude/fcache, gzip after an 8-byteCLFheader) contains all 200 features asnullwith zero rules, and the post-fix fetch logged0 changedversus the spoofed-era cache - so honest platform reporting unlocked nothing server-side. Without the force-flips every gated lookup returns null and the features (Code session launch, tool search, skills, Visualize, plugin state, ...) switch off. They stay.
Removed the MSIX-era platform spoofs - fixes Cowork showing "not supported on Windows" on Linux (#173)
enable_local_agent_mode no longer spoofs the platform anywhere: sub-patches 5 (HTTP header anthropic-client-os-platform: darwin), 5b (Macintosh User-Agent), 6 (getSystemInfo IPC returning win32), and 8 (navigator.platform = "Win32" + Windows userAgentFallback injected into every renderer window) were deleted. They date from the repackaged-Windows-build era, when claude.ai had to be tricked into enabling Cowork on Linux. Against the official Linux .deb - which reports linux natively and is supported by claude.ai - they backfired: the renderer's client-side platform check saw Windows and its Cowork gate replied "Cowork is not currently supported on Windows" (the message is remote claude.ai code, so it appeared without any desktop release). The renderer now sees the real platform. Two positive guards replace the spoofs: the header builder must send the raw .platform read, and the old navigator-spoof marker must be absent from the output (catches stale pre-patched inputs).
README: documented Arch Linux ARM's missing edk2-aarch64 package (#170)
Arch Linux ARM (and derivatives like EndeavourOS ARM, Manjaro ARM) doesn't carry edk2-aarch64 in its repos, even though the package is arch=any upstream on archlinux.org - so pacman -S edk2-aarch64 fails with target not found on native aarch64 hosts (e.g. Raspberry Pi 5), even after a full -Syu. Since the package is architecture-independent, the workaround is to grab it directly from an x86_64 Arch mirror and install it locally with pacman -U. Added this note (with the manual-install command) to both Arch Cowork-deps sections in the README.
Removed two no-op regression guards (fix_disable_autoupdate, fix_terminal_shell_linux)
Both patches had become pure no-ops - they mutated nothing and only asserted upstreamed behavior - so they were deleted rather than kept as empty guards. fix_disable_autoupdate used to inject a Linux short-circuit into the Squirrel isInstalled check; the official .deb now bails out of the update manager unless forceInstalled (false on our repackaged app), so auto-update is already off. fix_terminal_shell_linux used to rewrite a hardcoded powershell.exe default into a $SHELL → /bin/bash → /bin/sh ternary; the official .deb ships a proper POSIX shell resolver and the powershell.exe default is gone. Verified against a fresh unpatched v1.17377.1 bundle: both ran to exit 0 with zero byte changes. PLATFORM_GATE_BASELINE.md updated.
Removed fix_claude_code (Claude Code binary resolution is upstream-native on Linux)
The fix_claude_code patch was deleted after verifying against a fresh unpatched v1.17377.1 bundle that the official .deb resolves and downloads the Claude Code CLI natively on Linux. Its two mutating sub-patches did more harm than good: getBinaryPathIfReady()/getStatus() searched /usr/bin/claude, ~/.local/bin/claude, /usr/local/bin/claude, then which claude, and preferred that over the app's own managed binary - bypassing requiredVersion + checksum verification. Anyone with a stale or wrong-major-version claude on PATH (e.g. a global npm install) got it silently substituted, a source of bug reports rather than a fix.
None of it is needed anymore: getHostPlatform() returns linux-x64/linux-arm64 natively, the manifest carries a checksum-verified linux-x64 entry, and prepare() -> prepareForTarget() -> binaryExistsForTarget() -> downloadBinaryForTarget() fetches and verifies the CLI matching requiredVersion with no darwin/win32 gating. Users who genuinely want to pin their own binary use the sanctioned opt-in CLAUDE_CODE_LOCAL_BINARY=/path/to/claude (routed through upstream's initLocalBinary()). The third sub-patch was already just a no-op regression guard asserting the native getHostPlatform() Linux branch, so the whole patch was removed rather than kept as an empty guard. README (patch table, per-distro setup notes, Cowork section), PLATFORM_GATE_BASELINE.md, and the AUR optdepends note updated to drop the "Claude Code CLI required" claim. (Contributor-reported.)
Cowork VM deps recommended (matching upstream); README slimmed (3P, env-vars, Computer-Use deps moved to docs; optional deps inlined per distro)
- QEMU + UEFI firmware + virtiofsd declared as recommended deps, mirroring Anthropic's official
.deb. The official Claude Desktop.deblistsqemu-system-x86, ovmf, virtiofsdinRecommends:(verified by extracting v1.17377), and its docs mention no KVM/QEMU prerequisite at all. We match that:apt/dnfpull the Cowork VM deps by default (so Cowork works out of the box) but they stay soft - never blocking install on minimal/headless/KVM-less or immutable hosts, and no forced ~400 MB of QEMU on Chat/Code-only installs. Package names are architecture- and distro-specific: Archqemu-system-x86+edk2-ovmf(x86_64) /qemu-system-aarch64+edk2-aarch64(aarch64) asoptdepends; Fedoraqemu-system-x86/qemu-system-aarch64(RHEL usesqemu-kvm, gated with%if 0%{?rhel}) +edk2-ovmf/edk2-aarch64asRecommends; debqemu-system-x86+ovmf(amd64) /qemu-system-arm+qemu-efi-aarch64(arm64) asRecommends. Corrected two wrong names caught in review: Arch'sqemu-basecarries no emulator binary (and is x86_64-only), andqemu-system-x86/-aarch64don't exist on RHEL (it usesqemu-kvm). Using Cowork still needs thekvmgroup and the Claude Code CLI - a package can't do either. Computer Use tools stay optional; AppImage/Nix can't auto-install system packages, so they keep the manual instructions. - README Installation section reworked for a quicker start - each distro subsection (Arch/Debian/Fedora/Nix/AppImage/source) now carries its own "Optional deps" note with the distro-correct Cowork + Computer Use commands, right under the install command. The notes are accurate per package manager: apt
Recommends/ dnf weak deps pull the VM deps in by default, but pacman does not auto-installoptdepends(explicit command given), and AppImage/Nix can't auto-install at all. The two universal setup steps (kvm group + Claude Code CLI) are stated once up top. Third-Party / Enterprise Inferencetrimmed to a teaser + link. The full content already lived indocs/third-party-inference.md; the README now points there instead of duplicating it.Environment Variablesmoved todocs/environment-variables.md. The README keeps the four most-reached-for vars inline and links out for the full table.Computer Use dependenciessection removed; deps inlined per distro + reference moved todocs/computer-use-dependencies.md. Each Installation subsection now lists the Computer Use packages for that distro (session-broken-out) alongside the Cowork deps; the new doc holds the full matrix, the KDE/GNOME portal behavior notes,COWORK_SCREENSHOT_CMD, and theydotoolv1.0+ setup (incl. the Ubuntu/Debian build script).Computer Usefeature section trimmed to a teaser + link →docs/computer-use.md. The README keeps a short USP paragraph; the new doc holds "how it works on Linux," the notes (primary-monitor, app discovery, teach overlay), and the tool-reference link. The#computer-useanchor is preserved so existing cross-links still resolve.- Fixed
ydotoolscope in the install notes: it's needed on Sway/Hyprland/GNOME Wayland; KDE Plasma Wayland needs none (the bundledkwin-portal-bridgehandles input). Each distro's Computer Use deps became a per-session copyable command block.
Removed fix_dispatch_linux (Dispatch is upstream-native on Linux)
Dispatch (phone->desktop task orchestration) now works on the official Linux .deb with no patch - live-tested by sending a task from phone to desktop and receiving the rendered response on v1.17377.1. Over several releases upstream shipped everything the patch used to force: the sessions-bridge inits on Linux, the mobile remote-session-control path runs, the platform label returns "Linux", and the terminal MCP server's old pj (darwin||win32) gate was dropped entirely. The patch was deleted; docs (README patch table, PLATFORM_GATE_BASELINE.md, CLAUDE_FEATURE_FLAGS.md, CLAUDE_BUILT_IN_MCP.md) updated to note the upstreamed behavior.
Also re-audited the remaining 47 patches against a fresh unpatched v1.17377 bundle. Every other patch either still mutates the bundle (the bug/gate it fixes is still present) or is already a regression guard - so no further patches were redundant. Dispatch was the only one.
Pivot: repackage the official Claude Desktop Linux .deb
Anthropic shipped an official Claude Desktop Linux beta (docs). This project now repackages that official .deb instead of the Windows MSIX, and the sibling claude-cowork-service daemon is deprecated.
- New ingest pipeline. The build downloads the official
.debfrom the apt repo (https://downloads.claude.ai/claude-desktop/apt), verifies GPG + SHA256, extracts and patches itsapp.asar, and repackages for Arch/Fedora/RHEL/Nix/AppImage plus our own Debian/Ubuntu.deb.version-check.ymlnow polls the apt Packages index. - Dropped the Electron pin and node-pty rebuild. The official
.debbundles Electron 42.5.1 and pre-builtnode-ptyfor x86_64 and arm64. Deleted.electron-version,.electron-shasums, and theresolve-electron-version.sh/update-electron-shasums.sh/verify-electron.sh/rebuild-pty-for-arch.shscripts. - Cowork now runs on the official native VM backend. The
.debbundles cowork-linux-helper + virtiofsd + smol-bin + QEMU/OVMF (requires/dev/kvm), so theclaude-cowork-serviceGo daemon is no longer needed or installed. The 7-patch "cowork-wiring" cluster (fix_cowork_linux,fix_cowork_first_bash,fix_cowork_spaces,fix_cowork_error_message,fix_cowork_download_status_linux,fix_cowork_sandbox_refs,fix_vm_session_handlers) was removed; what remained became regression guards asserting the upstreamed native behavior. - Dropped the obsolete
@ant/claude-nativestub (patches/claude-native.js), which fixed "Download failed". The MSIX-era stub overwrote upstream's real Linux NAPI binding and lackedconnectUnixSocketSameUid, so the VM capability probe returnedvirtualization_entitlement_missing. The official.debships a real Linux binding; removing the stub lets it through and Cowork starts. - New patch
fix_cowork_firmware_paths_linux. On non-Debian distros the VM probe only searched the Debian OVMF paths, sofirmwarePathwas null and Cowork stayed unsupported. The patch adds the Fedora/RHEL and Arch UEFI firmware paths (only those whoseOVMF_CODE→OVMF_VARSderivation yields a real VARS file) plus Arch's/usr/lib/virtiofsd. openSUSE and generic-qemu symlinks are a known gap. - Launcher guarantees a usable
$PATH. Menu launches gavesystemd --user --scopean emptyPATH, so the backend'sqemu-system-x86_64lookup found nothing and reported "VM not supported". The launcher now injects the standard system bindirs viasystemd-run --setenv. - Cowork runtime dependencies declared (QEMU + OVMF/AAVMF firmware + virtiofsd; not bundled). Cowork needs them plus
/dev/kvmandkvm-group membership. Kept soft (recommended, matching the official.deb) - see the "Cowork VM deps recommended (matching upstream)" entry above for the final per-arch/-distro package names. - Full patch re-audit vs the official
.deb. Three cleanups:enable_local_agent_modeno longer force-marks the Cowork VM features (yukonSilver/yukonSilverGems/coworkKappa/coworkArtifacts) as supported, so support reflects the real native probe;fix_sensitive_dirs_linuxtightened its anchor to stop an over-application into an unrelated array;fix_claude_code'sgetHostPlatform()sub-patch became a regression guard (upstream now returnslinux-x64/linux-arm64natively). - glibc floor raised to 2.34 (RHEL 9 / Ubuntu 22.04). Debian 11 (bullseye) is no longer supported.
- Retained Linux value-adds: Computer Use (our exclusive feature, absent from the official beta), custom themes, multi-profile instances, and Quick Entry.
- Doc fix: the managed config path is
/etc/claude-desktop/managed-settings.json(read natively; top-level key stillmanagedMcpServers), not the oldenterprise.json. Updated README, CLAUDE.md, and the/3preference. .upstream-versionbumped to 1.17377.0.