Desktop starts managed agents with is_active: false (periodic reconcile ignores all three deactivation fields)
- Dominant language
- Rust
- Stars
- 32.7k
- Forks
- 4.3k
- Avg merge
- 1d 13h
- Merged PRs (30d)
- 253
Description
### What happens
A managed agent with `is_active: false` in `managed-agents.json` is started anyway by Buzz Desktop, on a roughly 21–23 minute cycle. Setting the other two plausible fields makes no difference.
I hit this while migrating a bring-your-own-harness seat off Desktop management onto a standalone `buzz-acp` bridge. Desktop kept starting a second supervisor for the same agent identity, so two processes were live on one pubkey.
### Reproduction
1. Have a managed agent (mine was a custom-harness seat, `agent_command_override` set).
2. Quit Buzz Desktop.
3. In `managed-agents.json`, on that agent's deployment record set `is_active: false` and `start_on_app_launch: false`.
4. Relaunch Desktop.
5. **At launch the agent correctly does not start** — so the fields are read.
6. Wait ~20 minutes.
**Expected:** it stays stopped.
**Actual:** Desktop starts it and writes a fresh `last_started_at`, so the start is deliberate rather than a stray process.
### Observed timeline
| time (UTC) | fields set at that point | result |
|---|---|---|
| 22:54:08 | `is_active=false`, `start_on_app_launch=false` | started |
| 23:15:28 | same (I had killed the previous one) | started |
| 23:38:54 | **+ `auto_restart_on_config_change=false`** | started |
The ~21 and ~23 minute spacing suggests a periodic reconcile pass rather than a config-change trigger — which matches `auto_restart_on_config_change: false` making no difference.
### Why it matters
There appears to be no supported way to stop Desktop managing an agent while keeping its record. For anyone running a seat under their own supervisor, this produces two live processes on one identity — duplicate replies at best, and in my case the duplicate had a path to credentials the intended process did not.
See also the companion report: deleting the deployment record does not help either, because Desktop recreates it.
### Environment
Buzz Desktop 0.5.3, macOS 15 (Darwin 24.6.0), self-hosted relay on `ghcr.io/block/buzz:main` (2026-08-01 build).
Contributor guide
Research direction
No source files, tests, or entry points are named. Start by tracing Buzz Desktop’s periodic managed-agent reconciliation after the documented 20-minute wait, then compare it with launch handling for is_active, start_on_app_launch, and auto_restart_on_config_change. Done means a disabled deployment remains stopped during reconciliation and does not receive a fresh last_started_at.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- desktop
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100