Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/content/docs/terminal/settings/all-settings.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -494,8 +494,8 @@ Settings for Warp features in SSH sessions and subshells.
**Section**: `[warpify.ssh]`

* `enable_ssh_warpification` — Whether to enable Warp features in SSH sessions. Type: boolean. Default: `true`.
* `enable_legacy_ssh_wrapper` — Deprecated in favor of `enable_ssh_warpification`. Type: boolean. Default: `true`.
* `use_ssh_tmux_wrapper` — Deprecated in favor of the [SSH extension](/terminal/warpify/ssh/). Type: boolean. Default: `false`.
* `enable_legacy_ssh_wrapper` — Has no effect on Warp's current behavior; retained only for a one-time migration to `enable_ssh_warpification`. Type: boolean. Default: `true`.
* `use_ssh_tmux_wrapper` — Has no effect on Warp's current behavior now that tmux-based Warpification has been removed in favor of the [SSH extension](/terminal/warpify/ssh/); retained only for a one-time migration. Type: boolean. Default: `false`.
* `reuse_existing_control_master` — Whether the legacy SSH wrapper attaches to an existing SSH `ControlMaster` for the destination host instead of always creating its own. Type: boolean. Default: `false`.
* `ssh_extension_install_mode` — Controls SSH extension installation behavior. Type: string. Default: `"always_ask"`. Options: `"always_ask"` (always prompt before installing), `"always_install"` (auto-install and connect without prompting), `"never_install"` (fall back to the legacy, wrapper-only SSH warpification).
* `ssh_hosts_denylist` — SSH hosts that should not trigger the warpification prompt. Type: array of strings. Default: `[]`.
Expand Down
3 changes: 1 addition & 2 deletions src/content/docs/terminal/warpify/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@ description: >-
import DemoVideo from '@components/DemoVideo.astro';

1. [Subshells](/terminal/warpify/subshells/), Warp supports enabling Warp features in subshells for bash, zsh, and fish.
2. [SSH](/terminal/warpify/ssh/), Warp's SSH extension brings the file tree, code editing, code review, and reliable completions to remote macOS and Linux hosts.
3. [SSH Legacy](/terminal/warpify/ssh-legacy/), Warp supports a legacy wrapper that enables Warp features in remote (SSH) sessions.
2. [SSH](/terminal/warpify/ssh/), Warp's SSH extension brings the file tree, code editing, code review, and reliable completions to remote macOS and Linux hosts, including a [legacy fallback wrapper](/terminal/warpify/ssh-legacy/) for hosts or settings that skip the extension.

## Subshells

Expand Down
1 change: 1 addition & 0 deletions src/content/docs/terminal/warpify/ssh-legacy.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ title: Legacy SSH wrapper
description: >-
Use the legacy SSH wrapper as a fallback when skipping the SSH extension or
when it can't run on a remote host.
topic: terminal
---
import DemoVideo from '@components/DemoVideo.astro';

Expand Down
24 changes: 5 additions & 19 deletions src/content/docs/terminal/warpify/ssh.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -25,19 +25,7 @@ A few properties worth knowing:

## What you get over SSH

Once the SSH extension is installed on a remote host, the following features work the same way they do locally:

* **File tree (Project Explorer)** - The left panel reflects the remote project's structure and updates as you `cd` between directories or change files. See [File Tree](/code/code-editor/file-tree/).
* **Code editor on remote files** - Open remote files in Warp's [code editor](/code/code-editor/) from the file tree or the Command Palette, edit them, and save back to the remote host. Warp keeps the buffer in sync with the remote file and surfaces a conflict resolution prompt if the file changes on disk while you have unsaved edits.
* **Code review and git operations** - The [code review panel](/code/code-review/) works on remote repositories, including reviewing diffs, discarding files, committing, pushing, and creating PRs. AI-generated commit messages and PR descriptions are produced on the remote host, so large diffs never leave the machine.
* **Codebase indexing** - Warp indexes the remote repository so Agents can semantically search the remote codebase, just like [Codebase Context](/agents/capabilities/codebase-context/) locally.
* **File search** - Search for remote files by name from the [Command Palette](/terminal/command-palette/).
* **Project rules and skills** - Agents discover and use the remote project's rules (`WARP.md`) and skills, the same as in a local repo.
* **Native file reads and code diffs** - The Agent reads files and applies edits through Warp's built-in diff tool. Code changes show up as inline diffs you can review and approve, instead of being applied via `sed` or other shell commands. See [Code diffs](/agents/local-agents/code-diffs/).
* **Reliable completions and autosuggestions** - Generators run in parallel over a single multiplexed connection instead of opening a new SSH session per command, so completions stop hitting the remote host's `MaxSessions` ceiling and stop occasionally injecting errors into your blocks.
* **All core terminal features** - The input editor, blocks, command history, autosuggestions, and history search behave the same as in a local session.

For a full breakdown of what works over SSH and what doesn't, see [Feature support over SSH](/code/ssh-feature-support/).
Once the SSH extension is installed on a remote host, most of Warp's coding features work the same way they do locally. See [Feature support over SSH](/code/ssh-feature-support/) for the full breakdown of what's included and what isn't. Headline features include a real file tree backed by the remote filesystem, Warp's code editor and code review on remote files, codebase indexing for the remote repo, and native code diffs applied through Warp's built-in diff tool instead of `sed`. Core terminal features like the input editor, blocks, and completions also work the same as they do locally.

![Warp prompting to Warpify a freshly-connected SSH session.](../../../../assets/terminal/warpify_ssh_prompt.png)

Expand All @@ -47,12 +35,14 @@ The SSH extension has the following requirements on the remote host:

* **Operating system** - Linux or macOS. Windows remote hosts are not supported. The extension is also not available from Warp's Windows client.
* **Architecture** - `x86_64` (amd64) or `aarch64` (arm64).
* **glibc 2.31 or newer (Linux)** - The prebuilt server binary requires glibc 2.31+ (Ubuntu 20.04 or equivalent). Hosts with an older glibc (for example RHEL/CentOS 7 and 8, Amazon Linux 2, Ubuntu 18.04, Debian 10) or a non-glibc libc (for example Alpine's musl) are not supported. Warp detects this before installing anything and quietly falls back to a regular SSH session.
* **glibc 2.31 or newer (Linux)** - The prebuilt server binary requires glibc 2.31+ (Ubuntu 20.04 or equivalent). Hosts with an older glibc (for example RHEL/CentOS 7 and 8, Amazon Linux 2, Ubuntu 18.04, Debian 10) or a non-glibc libc (for example Alpine's musl) are not supported. Warp detects this before installing anything and quietly falls back to the [legacy SSH wrapper](/terminal/warpify/ssh-legacy/).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❓ [QUESTION] This edit adds a second new link to /terminal/warpify/ssh-legacy/ in this same Requirements section — the trailing sentence added just below ("When a host doesn't meet these requirements... Warp falls back to the legacy SSH wrapper.") already covers this exact case. The approved spec's alignment round explicitly called for exactly one new link here to avoid scatter (validation criterion: "exactly one new link... and none elsewhere"). Is the duplication intentional (e.g. wanting the link inline at the specific failure condition, not just the summary), or should one of the two be dropped?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is fine

* **Shell** - `bash` or `zsh` as the remote shell.
* **Home directory and Unix sockets** - The install writes only under `~/.warp*/`, so your home directory must be writable. The server also needs to create Unix domain sockets under your home directory and run as a background process under your user.
* **Outbound HTTPS for install** - The install script downloads the server binary from `app.warp.dev` using `curl` or `wget`, so the host needs outbound HTTPS access to `app.warp.dev`. If neither `curl` nor `wget` is available, Warp uploads the binary over the SSH connection instead.
* **Outbound HTTPS for account-backed features** - Features that use your Warp account, such as codebase indexing and AI-generated commit messages, require the server on the remote host to reach Warp's servers over HTTPS. The server authenticates with credentials forwarded from your local Warp session over the SSH connection; you never log in on the remote host. Core features like the file tree, file reads and edits, and completions work without any outbound access from the host.

When a host doesn't meet these requirements, or when [SSH extension install mode](/terminal/settings/all-settings/#ssh) is set to **Never install**, Warp falls back to the [legacy SSH wrapper](/terminal/warpify/ssh-legacy/).
Comment thread
rachaelrenk marked this conversation as resolved.

:::note
We are actively working on extending support to older glibc versions and more operating systems.
:::
Expand Down Expand Up @@ -82,11 +72,7 @@ The same setting can also be changed inline from the install prompt by selecting

## Legacy: tmux-based Warpification

Tmux-based Warpification is an older approach to enabling Warp features in SSH sessions that uses [`tmux`](https://github.com/tmux/tmux/wiki) to multiplex commands over your SSH connection. The SSH extension supersedes it entirely.

:::caution
Tmux-based Warpification is **deprecated**. It will not receive new features, updates, or fixes, and it will eventually be removed. Use the SSH extension instead.
:::
Tmux-based Warpification was an older approach to enabling Warp features in SSH sessions that used [`tmux`](https://github.com/tmux/tmux/wiki) to multiplex commands over your SSH connection. It has been removed in favor of the SSH extension described on this page.

## FAQs

Expand Down
4 changes: 3 additions & 1 deletion src/sidebar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import { VARS } from './data/vars';
*/
export const sidebarTopics: StarlightSidebarTopicsUserConfig = [
{
id: 'terminal',
label: 'Terminal',
link: '/',
icon: 'laptop',
Expand Down Expand Up @@ -161,7 +162,8 @@ export const sidebarTopics: StarlightSidebarTopicsUserConfig = [
{ slug: 'terminal/warpify', label: 'Overview' },
{ slug: 'terminal/warpify/subshells', label: 'Warpify subshells' },
{ slug: 'terminal/warpify/ssh', label: 'SSH with Warp features' },
{ slug: 'terminal/warpify/ssh-legacy', label: 'Legacy SSH wrapper' },
// ssh-legacy is intentionally omitted: it's a fallback page linked
// from the SSH page rather than surfaced as a co-equal nav item.
],
},
{
Expand Down
Loading