warpdotdev/warp · error
`runner_id` is set in the config file but runner support is…
Error message
`runner_id` is set in the config file but runner support is not enabled
What it means
Thrown by the agent run path after merging the loaded config file with defaults: the merged config contains `runner_id`, but the CloudRunners feature flag is disabled in this build. The `run` command has no `--runner` flag to validate against, so this explicit check is the only guard. It rejects runner targeting on builds where cloud runner support has not been rolled out.
Solutions
- Remove `runner_id` from the agent config file so the task runs on the default runtime
- Switch to a build/channel where the CloudRunners feature flag is enabled (dogfood or preview build)
- Keep per-channel config files so a stable-channel run never sees a runner_id key
Example fix
# before (agent.toml, on a stable build without CloudRunners) runner_id = "rnr_123" # after # runner_id removed; task runs on the default runtime
Defensive patterns
Strategy: validation
Validate before calling
# Before running on a stable channel, reject configs that target runners if grep -Eq '^[[:space:]]*runner_id[[:space:]]*=' "$CONFIG" && ! is_dogfood_build; then echo "config sets runner_id but this build has no runner support" >&2 exit 1 fi warp agent run --config "$CONFIG"
Prevention
- Keep per-channel config files; never share a dogfood config with stable-channel runs
- Document flag requirements as comments inside the config file itself
- Lint agent configs in CI against the exact CLI build the job uses
When it happens
Trigger: Running `warp agent run` with a config file (resolved via the config-file path in the run args) that sets `runner_id`, on any build where `FeatureFlag::CloudRunners.is_enabled()` returns false (flag absent from DOGFOOD/PREVIEW/RELEASE flag sets for that channel).
Common situations: A config file authored on a dogfood or preview build (where CloudRunners is on) is reused on a stable build; a leftover `runner_id` key from an earlier runner experiment; CI pinned to an older CLI while the config assumes runner support.
Related errors
- --memory-gb is required when setting an instance shape for…
- Multiple runners match
- Runner ' ' not found
- This feature is not enabled
- --vcpus is required when setting an instance shape for a…
AI-assisted analysis of warpdotdev/warp@e72fd7aacb (2026-08-16).
Data as JSON: /api/errors/f63c167adf505c17.
Report an issue: GitHub.
Appendix: source
Thrown at app/src/ai/agent_sdk/mod.rs:382
// No config file is involved — the worker never passes --file alongside --task-id.
if args.task_id.is_some() {
return build_server_side_task(args, resolved_skill, ctx);
}
let loaded_file = match args.config_file.file.as_deref() {
Some(path) => Some(config_file::load_config_file(path)?),
None => None,
};
let cli_mcp_servers = build_mcp_servers_from_specs(&args.all_mcp_specs())?;
// Merge precedence: file < CLI < skill
let file_merged = config_file::merge_with_precedence(loaded_file.as_ref(), Default::default());
// Runner support is gated. The `run` command has no `--runner` flag, but a
// config file can still set `runner_id`, so reject it when the flag is off.
if file_merged.runner_id.is_some() && !FeatureFlag::CloudRunners.is_enabled() {
return Err(anyhow::anyhow!(
"`runner_id` is set in the config file but runner support is not enabled"
));
}
// Skill provides base_prompt and optionally name
let (skill_name, runtime_base_prompt) = match resolved_skill {
Some(skill) => (Some(skill.name.clone()), Some(skill.instructions.clone())),
None => (None, None),
};
// When a non-Oz harness is active, --model targets the harness rather than the Oz model.
let harness_model_id = if args.harness != Harness::Oz {
args.model.model.clone()
} else {
None
};
let harness_override = (args.harness != Harness::Oz).then_some(HarnessConfig {
harness_type: args.harness,View on GitHub (pinned to e72fd7aacb)