Panel-confirmed queue starts + harness-config lockdown for deployed agents - #574
Merged
Conversation
Deployed web terminals never hold the scan launch token, so a tokenless queue_start previously dead-ended in a refusal that read like a config bug. It now files a start request the bridge publishes on the queue summary and SSE stream; the BLUESKY queue panel renders it beside the queue it would drain with Confirm start (the panel's own token-gated start) and Dismiss controls. The request routes are ungated and arm nothing — the only start path remains the token-gated POST /queue/start, and the kill switch still refuses before a request is filed. Skill guidance, tool docstrings, refusal hints, deploy hints, and the bluesky how-to pages now all state the posture consistently: the agent never holds the token in a deployed terminal, the human's panel click is the arming decision, and config surgery is never the fix.
Rendered settings.json now switches off the CLI's bundled harness-configuration skills (update-config, keybindings-help, fewer-permission-prompts) via skillOverrides: a deployed operator agent must never edit its own permissions, env vars, hooks, or keybindings — harness changes are admin work done through the profile and regen. The setup-mode skill leaves the control-assistant preset's default roster for the same reason: its setup_patch can modify config.yml and .mcp.json. It remains in the artifact catalog for admin-facing profiles to opt into. Preset hash pins re-pinned accordingly; already-deployed projects will report staleness once, which is the intended signal.
Comment on lines
+96
to
+98
| "This operation arms hardware motion and needs the bridge's launch token, " | ||
| "which this agent does not hold — in deployed control rooms the token stays " | ||
| "with the operator's BLUESKY queue panel, by design.", |
Comment on lines
+99
to
+100
| "Hand the action to the operator: arming is done from the queue panel by a " | ||
| "human. Never edit config.yml, .env, or settings to obtain a token.", |
Comment on lines
+101
to
+102
| "Only if this deployment has no token configured ANYWHERE (details say so) " | ||
| "does an operator need to set one — that is operator work, not yours.", |
Comment on lines
+106
to
+107
| "Stage the plan with set_draft and add it with queue_add first, then ask " | ||
| "for the start again.", |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
1. Panel-confirmed start requests for tokenless agents — deployed web terminals never hold the Bluesky launch token (by design), so the agent's
queue_startused to dead-end in a refusal that read like a config bug. Now it files a start request:POST/DELETE /queue/start-requestpark/withdraw a request record published on the queue summary + SSE stream. The only start path remains the token-gatedPOST /queue/start, which consumes the request; the writes kill switch still refuses before a request is filed.queue_startreturns{started: false, start_request, message}telling the agent the human's confirmation is waiting in the queue panel.2. Harness-config lockdown — rendered
settings.jsonswitches off the CLI's bundled harness-configuration skills (update-config,keybindings-help,fewer-permission-prompts) viaskillOverrides, andsetup-mode(whosesetup_patchcan edit config.yml/.mcp.json) leaves the operator preset's default roster — it stays in the artifact catalog for admin profiles. Preset hash pins re-pinned; deployed projects report staleness once, as intended.Testing
Local targeted suites are green; full validation left to CI.