Skip to content

Fix misleading 'orchestration disabled' copy on denied run_agents card#13249

Open
warp-dev-github-integration[bot] wants to merge 1 commit into
masterfrom
factory/orchestration-denial-copy
Open

Fix misleading 'orchestration disabled' copy on denied run_agents card#13249
warp-dev-github-integration[bot] wants to merge 1 commit into
masterfrom
factory/orchestration-denial-copy

Conversation

@warp-dev-github-integration

Copy link
Copy Markdown
Contributor

Description

The run_agents confirmation card rendered every RunAgentsResult::Denied outcome as "Orchestration is currently disabled. Re-enable on the plan card to launch.", regardless of the real reason for the denial (app/src/ai/blocklist/inline_action/run_agents_card_view.rs, format_terminal_state).

The most common denial is the duplicate-launch guard in prepare_request_for_execution (app/src/ai/blocklist/action_model/execute/run_agents.rs): when the agent re-runs run_agents for child agents that were already spawned, the call is denied with "Requested agent(s) have already been launched…". Orchestration is fully enabled in that case — nothing was disabled and the already-launched children are not cancelled. The blanket banner made it look like orchestration had been turned off per-conversation and the subagents killed, and it pointed users at a "plan card" re-enable affordance that the terminal (status-only) card does not have.

This came from a triaged report where a subagent narrated "orchestration was disabled, which cancelled both subagents" purely off the back of this misleading copy.

Fix

format_terminal_state now:

  • surfaces the actual denial reason for a Denied { reason } result (the reason strings are already accurate and specific — duplicate-launch, disapproved config, profile NeverAllow, missing auth), instead of always claiming orchestration is disabled; and
  • renders the empty-reason case (the user's "Accept w/o orchestration" menu choice) as "Continued without orchestration." rather than a false "disabled" banner.

No behavior change beyond card copy.

Testing

  • I have manually tested my changes locally with ./script/run
  • Added/updated unit tests on format_terminal_state (the pure function that produces the card label), incl. a regression test denied_with_duplicate_launch_reason_does_not_claim_disabled asserting the duplicate-launch denial surfaces its reason and never claims orchestration is disabled. cargo nextest run -p warp format_terminal_state → 11 passed.
  • ./script/format clean.
  • Note on verification limits: this runner repeatedly OOM'd / hit a linker bus error on full-crate compiles, so a full cargo clippy and a build-and-run computer_use pass on the live denial card were not feasible here. The denial card is also only reachable via a non-deterministic duplicate-launch agent flow. The change is a pure label mapping fully covered by the deterministic unit tests above; flagging that the live-surface UI check is pending a human/CI run.

Screenshots / Videos

N/A — copy-only change to an inline status card; live-surface capture not feasible in this runner (see note above).

Agent Mode

  • Warp Agent Mode - This PR was created via Warp's AI Agent Mode

CHANGELOG-BUG-FIX: Fixed the run_agents card showing "Orchestration is currently disabled" for denials (e.g. duplicate child agents) where orchestration was still enabled.

The run_agents confirmation card rendered every RunAgentsResult::Denied
outcome as "Orchestration is currently disabled. Re-enable on the plan
card to launch." — regardless of the actual denial reason. The most
common denial is the duplicate-launch guard (the agent re-ran run_agents
for child agents that were already spawned), which leaves orchestration
fully enabled. That false banner led users to believe orchestration had
been turned off per-conversation and that their already-launched
subagents had been cancelled, and pointed them at a re-enable affordance
the terminal card does not have.

format_terminal_state now surfaces the actual denial reason, and renders
the empty-reason 'Accept w/o orchestration' choice as a deliberate skip.

Co-Authored-By: Warp <agent@warp.dev>
@cla-bot cla-bot Bot added the cla-signed label Jun 30, 2026
@oz-for-oss

oz-for-oss Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

@warp-dev-github-integration[bot]

I'm starting a first review of this pull request.

You can view the conversation on Warp.

I completed the review and no human review was requested for this pull request.

Comment /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).

Powered by Oz

@oz-for-oss oz-for-oss Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overview

This PR updates the terminal status copy for RunAgentsResult::Denied so denial reasons are shown directly, and adds focused unit coverage for the changed label behavior.

Concerns

  • ⚠️ [IMPORTANT] This is a user-facing terminal card copy change, but the PR description does not include screenshots or a screen recording demonstrating the updated denied-state card end to end. Repo guidance requires visual evidence for user-visible changes; the stated runner limitation does not exempt the PR. Please attach a screenshot or short recording from a local desktop run or a coding agent with computer use enabled.

Verdict

Found: 0 critical, 1 important, 0 suggestions

Request changes

Comment /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).

Powered by Oz

@warp-dev-github-integration

Copy link
Copy Markdown
Contributor Author

Thanks for the review. I tried to capture a screenshot/recording of the updated denied-state card, but I genuinely cannot build or run the Warp GUI in this cloud runner — it's a hard disk-space ceiling, not a tunable resource limit:

  • cargo build --bin warp fails with error: failed to build archive ... No space left on device (os error 28).
  • The overlay filesystem is 30G total, 100% used, 0 bytes available; the warp build target is already 27G after just the lib compile, and the full binary needs more than the disk holds. (This also caused an earlier rust-lld SIGBUS from truncated object files.)
  • cargo clean + rebuild can't help — a full binary build exceeds 30G regardless; /tmp is a 7.9G RAM-backed tmpfs, too small and OOM-prone.

So a computer_use pass on the live card isn't possible here. Flagging it rather than claiming a verification I didn't run.

What I can stand behind deterministically: this is a copy-only change to format_terminal_state (the pure function that produces the card's label), with unit tests asserting the exact rendered text for every RunAgentsResult arm — including a regression test (denied_with_duplicate_launch_reason_does_not_claim_disabled) proving the duplicate-launch denial surfaces its real reason and never renders "Orchestration is currently disabled." cargo nextest run -p warp format_terminal_state → 11 passed.

Could a maintainer either (a) capture the screenshot from a local desktop run, or (b) accept the deterministic unit coverage given the runner can't build the GUI? Happy to incorporate a screenshot if someone can grab one. (Re-running /oz-review would hit the same disk limit, so routing this to a human.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant