diff --git a/frontend/src/components/pilot/EscalateInterceptDialog.tsx b/frontend/src/components/pilot/EscalateInterceptDialog.tsx
index bb9b9f34..4ccd99a3 100644
--- a/frontend/src/components/pilot/EscalateInterceptDialog.tsx
+++ b/frontend/src/components/pilot/EscalateInterceptDialog.tsx
@@ -41,7 +41,7 @@ export function EscalateInterceptDialog({
{!partialStep ? (
<>
diff --git a/frontend/src/pages/AssistantChatPage.tsx b/frontend/src/pages/AssistantChatPage.tsx
index d1101ff6..aac1ae6a 100644
--- a/frontend/src/pages/AssistantChatPage.tsx
+++ b/frontend/src/pages/AssistantChatPage.tsx
@@ -552,7 +552,11 @@ export default function AssistantChatPage() {
const handleApplyFix = useCallback(() => {
if (!activeFix) return
if (activeFix.script_template_id) {
- setScriptPanelOpen(true) // existing TemplateMatchPanel flow in task lane
+ // TemplateMatchPanel is mounted inside TaskLane.bottomSlot, so the
+ // lane must be visible for the panel to render. On fresh sessions
+ // (no questions/facts) the lane defaults closed, so we open it here.
+ setShowTaskLane(true)
+ setScriptPanelOpen(true)
return
}
if (activeFix.ai_drafted_script) {