{"record":{"id":"9c1cdbef5b36fd80","repo":"warpdotdev/warp","slug":"unexpected-argument-skill-found","errorCode":null,"errorMessage":"unexpected argument '--skill' found","messagePattern":"unexpected argument '--skill' found","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"app/src/ai/agent_sdk/ambient.rs","lineNumber":239,"sourceCode":"        future: impl Spawnable<Output = anyhow::Result<()>>,\n        ctx: &mut ModelContext<Self>,\n    ) {\n        ctx.spawn(future, |_, result, ctx| match result {\n            Ok(()) => {\n                ctx.terminate_app(TerminationMode::ForceTerminate, None);\n            }\n            Err(err) => {\n                super::report_fatal_error(err, ctx);\n            }\n        });\n    }\n    fn run_agent(&self, args: RunCloudArgs, ctx: &mut ModelContext<Self>) -> anyhow::Result<()> {\n        if !FeatureFlag::AmbientAgentsCommandLine.is_enabled() {\n            return Err(anyhow::anyhow!(\"Unsupported feature\"));\n        }\n        let skill_enabled = FeatureFlag::OzPlatformSkills.is_enabled();\n        if args.skill.is_some() && !skill_enabled {\n            return Err(anyhow::anyhow!(\"unexpected argument '--skill' found\"));\n        }\n\n        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();","sourceCodeStart":221,"sourceCodeEnd":257,"githubUrl":"https://github.com/warpdotdev/warp/blob/e72fd7aacbbb2236d9b3be2aad7e7178fe94b4bc/app/src/ai/agent_sdk/ambient.rs#L221-L257","documentation":"The --skill argument parses unconditionally but is only honored when FeatureFlag::OzPlatformSkills is enabled; when disabled, run_agent (app/src/ai/agent_sdk/ambient.rs:239) rejects it with a clap-style 'unexpected argument' message so behavior matches help output that hides the flag.","triggerScenarios":"Passing --skill on a build/account where OzPlatformSkills is disabled (regardless of the AmbientAgentsCommandLine gate, which is checked first).","commonSituations":"Commands or docs written against a dogfood build re-used on stable; flag rolled back server-side while scripts keep passing --skill.","solutions":["Drop --skill and pass --prompt with the skill's text or reference instead","Run on a build/account where OzPlatformSkills is enabled"],"exampleFix":"# before\nrun ... --skill my-skill\n# after\nrun ... --prompt \"<prompt text or saved prompt id>\"","handlingStrategy":"validation","validationCode":"if args.skill.is_some() && !FeatureFlag::OzPlatformSkills.is_enabled() {\n    // drop --skill and use --prompt before invoking the command\n}","typeGuard":"fn skill_flag_available() -> bool {\n    FeatureFlag::OzPlatformSkills.is_enabled()\n}","tryCatchPattern":null,"preventionTips":["Do not hard-code --skill in shared scripts; gate it on the skills flag","Provide a --prompt fallback path in wrappers for environments without the flag"],"tags":["feature-flag","cli","arguments","skills"],"backgroundTag":null,"analyzedSha":"e72fd7aacbbb2236d9b3be2aad7e7178fe94b4bc","analyzedAt":"2026-08-16T08:27:25.381Z","schemaVersion":2},"datasetVersion":"2026-08-16T13:17:31.715Z"}