{"record":{"id":"bf131f36a7182bbd","repo":"zed-industries/zed","slug":"thread-mentions-are-only-supported-for-the-native","errorCode":null,"errorMessage":"Thread mentions are only supported for the native agent","messagePattern":"Thread mentions are only supported for the native agent","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"crates/agent_ui/src/mention_set.rs","lineNumber":614,"sourceCode":"        // expected. We're leveraging `cx.on_next_frame` to wait 2 frames and\n        // ensure that the layout has been recalculated so that the autoscroll\n        // request actually shows the cursor's new position.\n        cx.on_next_frame(window, move |_, window, cx| {\n            cx.on_next_frame(window, move |_, _, cx| {\n                editor.update(cx, |editor, cx| {\n                    editor.request_autoscroll(Autoscroll::fit(), cx)\n                });\n            });\n        });\n    }\n\n    fn confirm_mention_for_thread(\n        &mut self,\n        id: acp::SessionId,\n        cx: &mut Context<Self>,\n    ) -> Task<Result<Mention>> {\n        let Some(thread_store) = self.thread_store.clone() else {\n            return Task::ready(Err(anyhow!(\n                \"Thread mentions are only supported for the native agent\"\n            )));\n        };\n        let Some(project) = self.project.upgrade() else {\n            return Task::ready(Err(anyhow!(\"project not found\")));\n        };\n\n        let server = Rc::new(agent::NativeAgentServer::new(\n            project.read(cx).fs().clone(),\n            thread_store,\n        ));\n        let delegate =\n            AgentServerDelegate::new(project.read(cx).agent_server_store().clone(), None, None);\n        let connection = server.connect(delegate, project.clone(), cx);\n        cx.spawn(async move |_, cx| {\n            let agent = connection.await?;\n            let agent = agent.downcast::<agent::NativeAgentConnection>().unwrap();\n            let summary = agent","sourceCodeStart":596,"sourceCodeEnd":632,"githubUrl":"https://github.com/zed-industries/zed/blob/bc538def4545534201bbfcac4e95ac34ea6501b6/crates/agent_ui/src/mention_set.rs#L596-L632","documentation":"confirm_mention_for_thread requires a ThreadStore, which only exists when the conversation runs on Zed's native agent. External ACP agents (Claude Code, Gemini CLI, etc.) keep their own conversation histories, so Zed cannot attach a past thread as a mention and fails fast with this message.","triggerScenarios":"Selecting a thread mention in the mention picker while the active agent is an external/ACP agent, i.e. self.thread_store is None on the mention set.","commonSituations":"Switching the agent panel from the native Zed agent to an installed ACP agent and then trying to @-mention a previous conversation; picker UI that keeps thread suggestions visible regardless of the active agent.","solutions":["Switch the panel back to the native Zed agent before mentioning a thread.","Hide or disable thread suggestions in the picker when thread_store is None (UI fix).","Open the old thread and paste the relevant messages as a text mention instead."],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":"let thread_mentions_supported = self.thread_store.is_some();\n// gate thread suggestions in the picker on this flag","typeGuard":"fn supports_thread_mentions(thread_store: &Option<Entity<ThreadStore>>) -> bool {\n    thread_store.is_some() // present only for the native agent\n}","tryCatchPattern":null,"preventionTips":["Gate thread mention suggestions on thread_store presence.","Clear thread-type suggestions from the picker when the user switches to an external ACP agent.","Document that external ACP agents keep their own conversation history and cannot consume thread mentions."],"tags":["zed","agent-ui","acp","native-agent","mentions"],"backgroundTag":null,"analyzedSha":"bc538def4545534201bbfcac4e95ac34ea6501b6","analyzedAt":"2026-08-16T07:30:46.435Z","schemaVersion":2},"datasetVersion":"2026-08-16T08:17:34.114Z"}