Keep orchestrated remote children on the default computer-use setting - #14602
Open
warp-agent-staging[bot] wants to merge 2 commits into
Open
Keep orchestrated remote children on the default computer-use setting#14602warp-agent-staging[bot] wants to merge 2 commits into
warp-agent-staging[bot] wants to merge 2 commits into
Conversation
An orchestrated `run_agents` call that omits `remote.computer_use_enabled` was collapsing to a plain `false` on the client and then sending an explicit `computer_use_enabled: false` on each child's spawn request. That explicit disable bypasses the server's normal default (Oz harness -> on), so every cloud child ran with computer use off unless a skill hardcoded the flag. Carry the flag as a tri-state `Option<bool>` from the tool-call conversion through the execution mode to the remote-child launch: unspecified now leaves the field off the spawn request so the server resolves its documented default, while an explicit choice still wins for the batch. The approved orchestration config no longer seeds a hard `false` either, since the plan carries no computer-use opinion. Local children are unaffected. Co-Authored-By: Warp <agent@warp.dev> Co-Authored-By: Oz <oz-agent@warp.dev>
…-remote-computer-use-default
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.
Description
Orchestrated remote children were effectively hard-defaulting computer use to off. When a
run_agentscall omittedremote.computer_use_enabled, the client collapsed the unset flag to a plainfalseand then sent an explicitcomputer_use_enabled: falseon each child'sSpawnAgentRequest, which bypasses the server's normal default (ComputerUseEnabledOrDefault→ on for the Oz harness). Skills had to hardcodecomputer_use_enabled: truejust to get the standard cloud behaviour.This carries the flag as a tri-state
Option<bool>end to end:app/src/ai/agent/api/convert_from.rs— maps the wire bool ontoOption<bool>instead of collapsing it into an explicit choice.crates/ai/src/agent/action/mod.rs—RunAgentsExecutionMode::RemoteandStartAgentExecutionMode::Remotenow carrycomputer_use_enabled: Option<bool>.app/src/ai/orchestration/remote_child.rs— newspawn_computer_use_enabled/effective_computer_use_enabledhelpers. Unspecified leaves the field off the spawn request (it isskip_serializing_if = "Option::is_none"), so the server resolves its documented default: Oz → computer use on, third-party harnesses → off. An explicit choice still wins for Oz children.app/src/ai/orchestration/config_state.rs— the approved orchestration config no longer seeds a hardfalse; the plan carries no computer-use opinion, so plan-driven launches also start unspecified.Local (non-remote)
run_agentschildren are unaffected — computer use is remote-only on this tool. There is no user-facing surface for this flag (it is explicitly hidden from the orchestration editors), so this is headless orchestration plumbing with nothing to exercise in a UI; no computer-use/screenshot proof applies.Known limitation / follow-up
The generated Rust proto for
warp.multi_agent.v1.RunAgents.Remote.computer_use_enabledhas no field presence —warp_multi_agent_api's codegen rewrites the editions source tosyntax = "proto3", so an omitted flag and an LLM-set explicitfalseboth decode asfalseon the client (Go keeps presence; Rust does not). The client therefore treats a wirefalseas "no opinion". Honouring an LLM-set explicitfalseend to end needs either field presence in the generated Rust proto (awarp-proto-apischange) or server-side resolution atrun_agentsemission; the plumbing here already carriesSome(false)faithfully to the spawn request once that lands. A companion warp-server change (warpdotdev/warp-server#13672) hardens the server side of the same ticket.Linked Issue
REMOTE-2444
ready-to-specorready-to-implement.Testing
Five regression tests were added; the two behavioural ones fail against the pre-fix mapping and pass after it (verified by temporarily restoring the old behaviour):
ai::agent::api::convert_from::tests::run_agents_remote_without_computer_use_flag_stays_unspecified— a remote block whosecomputer_use_enabledarrives as the wire zero value staysNone(fails pre-fix).ai::agent::api::convert_from::tests::run_agents_remote_with_computer_use_enabled_round_trips— explicittruestill round-trips.ai::orchestration::remote_child::tests::unspecified_computer_use_is_omitted_from_the_child_spawn_request— the Oz child's spawn config omits the field.ai::orchestration::remote_child::tests::explicitly_disabled_computer_use_still_reaches_the_child_spawn_requestandcomputer_use_is_dropped_for_third_party_harness_children.ai::orchestration::remote_child::tests::computer_use_resolution_mirrors_the_cloud_defaultplusai::orchestration::config_state::tests::from_orchestration_config_leaves_computer_use_unspecified(fails pre-fix) andoverride_from_approved_config_preserves_explicit_computer_use.Checks run locally:
./script/formatand./script/check_no_inline_test_modules— clean.cargo clippy -p warp -p ai -p warp_tui --all-targets --tests -- -D warnings— clean.cargo nextest run -p warp -p ai -p warp_tui— 7419 tests run, 7415 passed. The 4 failures are pre-existing sandbox-environment failures unrelated to this change:warp_tui session::tests::accepts_startup_without_resumeandwarp server::server_api::ai::tests::ambient_agent_headers_...fail because this cloud sandbox exportsWARP_API_KEY/ an ambient-agent workload token (re-running the first withenv -u WARP_API_KEYpasses), andterminal::input::tests::test_histignorespace_support_in_zsh/terminal::input::decorations::tests::test_decorations_with_multibyte_charsdepend on a local shell/terminal environment. CI is the full-suite gate.I have manually tested my changes locally with
./script/run— not applicable: this is headless orchestration plumbing behind a cloudrun_agentsdispatch with no rendered surface, verified with the tests above.Agent Mode
Originating thread: https://warpdev.slack.com/archives/C0BDQDW8V5E/p1785519725716929
Conversation: https://staging.warp.dev/conversation/ad9c4a6a-27a1-4e1c-a8cc-ff7cc422816c
Run: https://oz.staging.warp.dev/runs/019fb952-9159-7961-ba04-dce0d927e266
This PR was generated with Oz.