diff --git a/.changeset/tidy-codex-shift-arrows.md b/.changeset/tidy-codex-shift-arrows.md
index a46d4fce..ff430edf 100644
--- a/.changeset/tidy-codex-shift-arrows.md
+++ b/.changeset/tidy-codex-shift-arrows.md
@@ -2,4 +2,4 @@
"aicodeman": patch
---
-Add Shift+Left and Shift+Right buttons to the default and extended mobile agent keyboard bars, enabling Codex queued-message editing and prompt-stack navigation. Flush locally buffered drafts before navigation and keep terminal focus after taps.
+Add Shift+Left and Shift+Right buttons to the default and extended mobile agent keyboard bars, shown only on Codex sessions, enabling Codex queued-message editing and prompt-stack navigation. Flush locally buffered drafts before navigation and keep terminal focus after taps.
diff --git a/README.md b/README.md
index e53c540f..27ba7db2 100644
--- a/README.md
+++ b/README.md
@@ -209,7 +209,7 @@ The most responsive AI coding agent experience on any phone. Full xterm.js termi
Password typing on phone
QR code scan — instant auth
-- **Keyboard accessory bar** — `⇧←` / `⇧→` send Shift+Left / Shift+Right in both default and extended agent layouts (Codex defaults: edit the last queued message / return through the prompt stack); `/init`, `/clear`, `/compact` quick-action buttons above the virtual keyboard; destructive commands require a double-press to confirm, so you never fire one by accident
+- **Keyboard accessory bar** — `/init`, `/clear`, `/compact` quick-action buttons above the virtual keyboard; destructive commands require a double-press to confirm, so you never fire one by accident; on Codex sessions the bar also shows `⇧←` / `⇧→` (Shift+Left / Shift+Right: edit the last queued message / return through the prompt stack)
- **Dedicated Enter button** — replays the keypress through the terminal, so text buffered by local echo is flushed first rather than stranded
- **Swipe navigation & smart keyboard handling** — swipe left/right to switch sessions; toolbar and terminal shift up when the keyboard opens (`visualViewport` API)
- **Built for phones** — safe-area insets for notch and home indicator, 44px touch targets, bottom-sheet case picker, native momentum scrolling
diff --git a/src/web/public/keyboard-accessory.js b/src/web/public/keyboard-accessory.js
index 4215cd35..9e954ff5 100644
--- a/src/web/public/keyboard-accessory.js
+++ b/src/web/public/keyboard-accessory.js
@@ -4,8 +4,10 @@
* Defines three exports:
*
* - KeyboardAccessoryBar (singleton object) — Quick action buttons shown above the virtual
- * keyboard on mobile: arrow up/down, /init, Tab, Shift+Left/Right, paste, Esc, and dismiss (the extended
- * bar adds /clear, /compact, Shift+Tab and more). Tab flushes any locally-buffered
+ * keyboard on mobile: arrow up/down, /init, Tab, paste, Esc, and dismiss (the extended
+ * bar adds /clear, /compact, Shift+Tab and more). Shift+Left/Right ship in both agent
+ * layouts but are revealed only on Codex sessions (`codex-enabled` marker class on the
+ * bar, synced on every session switch), since they are Codex bindings. Tab flushes any locally-buffered
* prompt text to the PTY before sending \t, so completion applies to what was typed.
* The paste button opens a dialog that handles both text paste and image attach
* (native picker + best-effort image paste, routed through app._uploadAndInsertImages).
@@ -661,8 +663,8 @@ const KeyboardAccessoryBar = {
-
-
+
+