Desktop: ensure_cli_symlink retargets ~/.local/bin/buzz at the AppImage extract under /tmp
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 84/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- rust
- Domain
- desktop, operating-systems
Research direction
Start in desktop/src-tauri/src/managed_agents/nest.rs at ensure_cli_symlink, then inspect the existing test covering regular files. Add coverage for an executable path under /tmp and verify that an existing durable ~/.local/bin/buzz symlink is not retargeted; the fix is done when the symlink still points to the durable CLI after the function runs.
Written by the indexing model from the issue text.
Description
Describe the bug
On Linux, every desktop boot runs ensure_cli_symlink (desktop/src-tauri/src/managed_agents/nest.rs). That function deletes any existing symlink at ~/.local/bin/buzz and creates a new one to the bundled CLI next to current_exe().
An AppImage sets current_exe() under /tmp/appimage_extracted_*/usr/bin. /tmp is tmpfs on many distros. After a reboot the target is gone. Anything that calls buzz by name then fails: no binary, no error from desktop, agents and timers just stop posting.
The function already leaves a regular file alone. That is the documented escape hatch for a user-compiled binary. A hardlink of a durable CLI at ~/.local/lib/buzz-<ver>/buzz therefore survives boot. A symlink does not.
This is a different failure from #3471. That issue is the installer GUI wrapper script. This one is desktop overwriting a working CLI symlink on every start.
Steps to reproduce
- Install
Buzz_0.5.14_amd64.AppImage(or any current Linux AppImage). - Extract
usr/bin/buzzto a durable path, e.g.~/.local/lib/buzz-0.5.14/buzz. ln -sfn ~/.local/lib/buzz-0.5.14/buzz ~/.local/bin/buzz- Confirm
buzz --helpprintsBuzz CLI. - Open the AppImage.
readlink -f ~/.local/bin/buzz
Expected behavior
~/.local/bin/buzz still names a durable CLI. The function skips the write when current_exe() is under /tmp, or when ~/.local/bin/buzz already exists.
Actual behavior
The symlink now points at /tmp/appimage_extracted_<hash>/usr/bin/buzz. Observed on Fedora with desktop-v0.5.14 at 16-08-2026 18:09 and 17-08-2026 09:31. The two binaries were byte-identical. The path is what breaks.
Version and platform
- Buzz version: 0.5.14 (
Buzz_0.5.14_amd64.AppImage) - OS: Fedora Linux
- The same function is on
main(desktop/src-tauri/src/managed_agents/nest.rs). Tests already cover "do not clobber a regular file".
Logs / additional context
// On every boot: replaces any existing symlink unconditionally (the `buzz` /
// `buzz-dev` name is our namespace), creates a new one if absent, and leaves
// regular files alone to avoid clobbering a user-compiled binary.
A tight fix is: return early when exe_parent is under /tmp (or under appimage_extracted_). Alternatively, skip the replace when the existing symlink target exists and is not this process's bundled CLI.
Workaround that survives boot today: replace the symlink with a hardlink (ln, no -s) of the durable CLI. The regular-file branch leaves it alone.
Duplicates searched: none for ensure_cli_symlink + /tmp. Closest open issue is #3471 (installer wrapper named buzz).
- Dominant language
- Rust
- Stars
- 33.7k
- Forks
- 4.4k
- Avg merge
- 1d 21h
- Merged PRs (30d)
- 239
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from block/buzz
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
-
workflow_sink's mention parser never masks code regions — @name inside a code span wakes the agent Open
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
Difficulty 2/5 Half a day Newbie friendliness 88/100
-
Difficulty 1/5 Under an hour Newbie friendliness 92/100
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Eynzof/Hermes-CN-Desktop#610 ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
gitbutlerapp/gitbutler#15998 · 1 comment ·
-
bug triage:deciding
Difficulty 1/5 Under an hour Newbie friendliness 88/100
open-telemetry/otel-arrow#4132 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100