{"record":{"id":"2e84f85aea596a8d","repo":"warpdotdev/warp","slug":"either-prompt-skill-or-conversation-must-b","errorCode":null,"errorMessage":"Either --prompt, --skill, or --conversation must be provided","messagePattern":"Either --prompt, --skill, or --conversation must be provided","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"app/src/ai/agent_sdk/ambient.rs","lineNumber":260,"sourceCode":"        let refresh_future = super::common::refresh_workspace_metadata(ctx);\n        let warp_drive_sync_future = super::common::refresh_warp_drive(ctx);\n        let setup_future = future::try_join(refresh_future, warp_drive_sync_future);\n\n        ctx.spawn(setup_future, move |_runner, setup_result, ctx| {\n            if let Err(err) = setup_result {\n                super::report_fatal_error(err, ctx);\n                return;\n            }\n\n            // Validate that at least one of prompt, skill, or conversation is provided.\n            // conversation is used to continue an existing cloud conversation.\n            let prompt = args.prompt_arg.to_prompt();\n            let has_prompt_source = prompt.is_some()\n                || (skill_enabled && args.skill.is_some())\n                || args.conversation.is_some();\n            if !has_prompt_source {\n                super::report_fatal_error(\n                    anyhow::anyhow!(\"Either --prompt, --skill, or --conversation must be provided\"),\n                    ctx,\n                );\n                return;\n            }\n            let prompt = match prompt {\n                Some(Prompt::PlainText(text)) => Some(text),\n                Some(Prompt::SavedPrompt(id)) => {\n                    // Resolve the saved prompt to pass along as the ambient agent query.\n                    // We look up the prompt text here, rather than passing along the saved prompt ID,\n                    // in order to support personal saved prompts, which team service accounts would not\n                    // have access to.\n                    // TODO: we should pipe the saved prompt ID through the API, and resolve it server-side.\n                    // That'd also allow finding all tasks which used a given saved prompt.\n                    let sync_id: SyncId = match ServerId::try_from(id.as_str()) {\n                        Ok(server_id) => server_id.into(),\n                        Err(err) => {\n                            super::report_fatal_error(\n                                anyhow::anyhow!(\"Failed to parse saved prompt ID '{id}': {err}\"),","sourceCodeStart":242,"sourceCodeEnd":278,"githubUrl":"https://github.com/warpdotdev/warp/blob/e72fd7aacbbb2236d9b3be2aad7e7178fe94b4bc/app/src/ai/agent_sdk/ambient.rs#L242-L278","documentation":"After setup futures complete, run_agent requires at least one prompt source: --prompt, --skill (counted only when OzPlatformSkills is enabled), or --conversation to continue an existing cloud conversation (app/src/ai/agent_sdk/ambient.rs:253-263). With none present it calls report_fatal_error and terminates. Note the check happens after the metadata/drive refresh, so it fails late, after setup work.","triggerScenarios":"Running the cloud-agent command with no --prompt, no --skill, and no --conversation; or passing only --skill while OzPlatformSkills is disabled, in which case it does not count as a prompt source.","commonSituations":"Assuming the command reads a default prompt from config; forgetting that a disabled --skill flag neither runs nor satisfies the requirement.","solutions":["Add --prompt '...', --skill, or --conversation to the invocation","If using --skill, first confirm the skills feature flag is enabled — otherwise it will not satisfy this requirement"],"exampleFix":"# before\nrun ... \n# after\nrun ... --prompt \"summarize today's incidents\"","handlingStrategy":"validation","validationCode":"let has_prompt_source = args.prompt_arg.to_prompt().is_some()\n    || (FeatureFlag::OzPlatformSkills.is_enabled() && args.skill.is_some())\n    || args.conversation.is_some();\nif !has_prompt_source {\n    // fail fast with your own message before spawning setup work\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Require a prompt source in your wrapper before invoking the run command","Remember a disabled skills flag makes --skill not count as a prompt source"],"tags":["cli","ambient-agents","validation","prompt"],"backgroundTag":null,"analyzedSha":"e72fd7aacbbb2236d9b3be2aad7e7178fe94b4bc","analyzedAt":"2026-08-16T08:27:25.381Z","schemaVersion":2},"datasetVersion":"2026-08-16T13:17:31.715Z"}