block / block/buzz

Desktop starts managed agents with is_active: false (periodic reconcile ignores all three deactivation fields)

Open
#4,450 1 comment 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.