diff --git a/.pr-screenshots/pr9979-supported-button.png b/.pr-screenshots/pr9979-supported-button.png
deleted file mode 100644
index 4ea729ee4d1..00000000000
Binary files a/.pr-screenshots/pr9979-supported-button.png and /dev/null differ
diff --git a/.pr-screenshots/pr9979-supported-sheet.png b/.pr-screenshots/pr9979-supported-sheet.png
deleted file mode 100644
index cc944bdea56..00000000000
Binary files a/.pr-screenshots/pr9979-supported-sheet.png and /dev/null differ
diff --git a/.pr-screenshots/pr9979-unsupported-update-toast.png b/.pr-screenshots/pr9979-unsupported-update-toast.png
deleted file mode 100644
index b3e519cffa5..00000000000
Binary files a/.pr-screenshots/pr9979-unsupported-update-toast.png and /dev/null differ
diff --git a/mobile/app/h/[hostId]/session/[worktreeId].tsx b/mobile/app/h/[hostId]/session/[worktreeId].tsx
index 1158c7fb2de..ceab31312b8 100644
--- a/mobile/app/h/[hostId]/session/[worktreeId].tsx
+++ b/mobile/app/h/[hostId]/session/[worktreeId].tsx
@@ -4514,7 +4514,7 @@ export default function SessionScreen() {
>
- {/* Why: always render so the tab row never shifts while capabilities load; the tap explains unsupported/probing hosts instead. Old hosts strip agentPrompt, so the sheet only opens once support is confirmed. */}
+ {/* Why: stable placement matters, while old hosts must stay gated because they strip agentPrompt. */}
{
+ it('keeps the button mounted while preserving the capability gate', () => {
+ const tabSource = getQuickCommandsTabSource()
+
+ expect(tabSource).toContain(' {
+ expect(source).toContain('visible={showQuickCommands && quickCommandsSupported === true}')
+ })
+})