[FEATURE] SSH sessions should have feature parity with local sessions (Terminal & Preview panes missing)
Preflight Checklist
- [x] I have searched existing requests and this feature hasn't been requested yet
- [x] This is a single feature request (not multiple features)
Problem Statement
After the April 2026 desktop redesign, local sessions gained a polished set of panes — Preview, Diff, Terminal, Tasks, and Plans. The redesign blog post explicitly framed this as achieving "parity" with the CLI experience.
However, SSH sessions receive a reduced subset of this UI. The pane menu in an SSH session only exposes Diff, Tasks, and Plans. Terminal and Preview are silently omitted — there is no tooltip, no "coming soon" label, no documented rationale.
Side-by-side comparison
Local session (5 panes):
- ▷ Preview (⇧⌘P)
- ▭ Diff (⇧⌘D)
>_Terminal (⌃`)- ▦ Tasks
- ☰ Plans
SSH session (3 panes):
- ▭ Diff (⇧⌘D)
- ▦ Tasks
- ☰ Plans
(screenshots attached in Additional Context)
SSH is the primary workflow for users whose codebase lives on a company dev server, a lab machine, or a VPS. For these users, "local" is literally not an option — the SSH experience is the product.
The missing Terminal breaks the fundamental agentic coding loop: see Claude's edit → run a test/build → iterate. Without an integrated terminal, users must keep a separate terminal emulator open and manually sync its working directory and environment with Claude's session. This is precisely the context-switch the redesign was supposed to eliminate.
Proposed Solution
Bring SSH sessions to feature parity with local sessions:
- [ ] Expose the Terminal pane in SSH sessions, spawning
bash -i(or the user's login shell) on the remote host, inheriting the session's working directory and environment. - [ ] Expose the Preview pane in SSH sessions via automatic local port forwarding for dev servers running on the remote (same approach as VS Code Remote-SSH).
- [ ] If any pane genuinely cannot be supported over SSH in the short term, show it in the menu with an explanation or "coming soon" affordance instead of hiding it silently.
Why this is technically feasible
The infrastructure already exists:
- A bidirectional pipe to the remote host is already established. The desktop app deploys
ccd-clito~/.claude/remote/ccd-cli/<version>on the remote and streams JSON over stdio. That's the hard part — it's done. - File I/O over that pipe already works — the File pane reads/writes remote files fine. This proves the transport layer is not the limitation.
- Arbitrary shell execution already works — Claude runs bash commands on the remote via tool calls. A Terminal pane is essentially
bash -iover the same pipe exposed via an xterm.js-style frontend. No new protocol required. - Preview via port forwarding is a standard SSH feature that IDEs like VS Code Remote-SSH already negotiate automatically.
The Terminal pane in an SSH session is primarily a UI-wiring task, not a systems-level undertaking.
Alternative Solutions
- Keep an external terminal emulator open manually. Works, but this is exactly the context-switch the redesign eliminated for local users. The terminal's working directory and environment also drift from Claude's session over time.
- Use
tmux/moshin a separate window. Same problem plus extra setup burden. Does not integrate with the session's diff/file/plan panes. - Run the desktop app on the remote via X-forwarding/VNC. Not practical — the remote is often headless, and the desktop app is not available for all Linux distributions.
Priority
Critical - Blocking my work
Feature Category
Other
Use Case Example
- Connect to a remote dev server via SSH session in Claude Code Desktop
- Ask Claude to implement a feature — it edits files on the remote host
- Want to run
pytestorcargo testto verify the change - Current experience: Must alt-tab to a separate terminal, manually
cdto the project directory, re-export environment variables, run the test, come back to Claude - Working directory and shell environment gradually drift from Claude's session as the conversation progresses
- With integrated Terminal pane: The full edit → test → iterate loop happens in one window, same as local sessions today
Additional Context
Environment
- Claude Desktop: v1.2773.0 (884b37), 2026-04-15
- Host OS: macOS
- Remote: Linux (
ccd-cli2.1.101) - Plan: Max
Screenshots — pane menu comparison
SSH session (3 panes):
(see attached: ssh-panes.png)
Local session (5 panes):
(see attached: local-panes.png)
Related issues
- #26694 — SSH remote host: macOS/darwin support
- #15208 — SSH connector for Claude Code Web
- #37345 — CLI-as-remote-control-client
- #46845 — SSH first-run ccd-cli crash
These all point to the same theme: the SSH workflow matters to a meaningful slice of users and is currently a second-class citizen in the desktop app.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗