{"record":{"id":"fec7a6b0ab646f08","repo":"aaif-goose/goose","slug":"compact-is-not-available-for-provider-provider","errorCode":null,"errorMessage":"/compact is not available for provider '{provider}' because it manages its own conversation context","messagePattern":"/compact is not available for provider '(.+?)' because it manages its own conversation context","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"crates/goose/src/agents/execute_commands.rs","lineNumber":176,"sourceCode":"                if let Some(message) = self\n                    .handle_recipe_command(command, params_str, session_id)\n                    .await?\n                {\n                    #[cfg(feature = \"telemetry\")]\n                    crate::posthog::emit_custom_slash_command_used();\n                    return Ok(Some(message));\n                }\n\n                self.handle_skill_command(command, params_str, session_id)\n                    .await\n            }\n        }\n    }\n\n    async fn handle_compact_command(&self, session_id: &str) -> Result<Option<Message>> {\n        let provider = self.provider().await?;\n        if provider.manages_own_context() {\n            return Err(anyhow!(context_management_unsupported_message(\n                \"compact\",\n                provider.get_name()\n            )));\n        }\n\n        let manager = self.config.session_manager.clone();\n        let session = manager.get_session(session_id, true).await?;\n        let conversation = session\n            .conversation\n            .ok_or_else(|| anyhow!(\"Session has no conversation\"))?;\n\n        let model_config = self.model_config_for_session(session_id).await?;\n        let compaction = compact_messages(\n            provider.as_ref(),\n            &model_config,\n            session_id,\n            &conversation,\n            true, // is_manual_compact","sourceCodeStart":158,"sourceCodeEnd":194,"githubUrl":"https://github.com/aaif-goose/goose/blob/3810898a7447ec3299be72e223d3570a7aabf0ab/crates/goose/src/agents/execute_commands.rs#L158-L194","documentation":"Returned by the /compact slash command when the active provider reports manages_own_context() == true (ACP-style agents that keep and trim their own conversation state). Compaction is goose-side history rewriting, which would fight the provider's own context management, so the command is refused by design. The message names the command and provider for the user.","triggerScenarios":"Running /compact (or calling execute_command with \"/compact\") in a session whose provider is an ACP agent such as claude-code that manages its own context window.","commonSituations":"Switching a workflow from a standard provider to an ACP provider while keeping the /compact habit; desktop users clicking a compact action that is not provider-aware; scripts that always run /compact after N turns.","solutions":["Do nothing — the provider already handles context compaction internally; this is expected behavior","If you need goose-managed compaction, switch the session to a standard (non-ACP) provider","In UIs/scripts, check provider.manages_own_context() first and hide or skip the compact action"],"exampleFix":"// before\nagent.execute_command(\"/compact\", session_id).await?; // Err for ACP providers\n\n// after\nlet provider = agent.provider().await?;\nif !provider.manages_own_context() {\n    agent.execute_command(\"/compact\", session_id).await?;\n}","handlingStrategy":"validation","validationCode":"// Rust — gate /compact on the provider's context capability\nlet provider = agent.provider().await?;\nif provider.manages_own_context() {\n    // skip compaction; the provider manages its own context\n} else {\n    agent.execute_command(\"/compact\", session_id).await?;\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Check provider.manages_own_context() before offering or scripting /compact","Learn which providers are ACP-style in your setup and adapt workflows accordingly","Do not script unconditional /compact after N turns — make it capability-aware"],"tags":["compact","context-management","acp","provider","slash-commands"],"backgroundTag":null,"analyzedSha":"3810898a7447ec3299be72e223d3570a7aabf0ab","analyzedAt":"2026-08-16T10:14:26.282Z","schemaVersion":2},"datasetVersion":"2026-08-16T13:17:31.715Z"}