Skip to main content
All advanced configurations can be found in Devin Settings which can be accessed by the top right dropdown → Devin Settings or Command Palette (Ctrl/⌘+Shift+P) → Open Devin User Settings.

Enabling agent access to .gitignore files

To provide Devin with access to files that match patterns in your project’s .gitignore, open Devin Settings and go to Devin Local → Configuration → Gitignore access. By default, it is turned off. To provide access, turn it on by clicking the toggle.

Agent diff zones

When an agent edits files, Devin Desktop displays diff zones — inline highlighted regions in the editor that show exactly what changed, with accept and reject controls for each hunk. All agents use diff zones by default. You can turn off diff zones in Devin Settings → Editor → User interface → Agent diff zones. When disabled, agent edits are applied directly to the file and the toolbar shows a simple dismiss button instead of accept/reject controls.

SSH Support

The usual SSH support in VSCode is licensed by Microsoft, so we have implemented our own just for Devin Desktop. It does require you to have OpenSSH installed, but otherwise has minimal dependencies, and should “just work” like you’re used to. You can access SSH under Remote-SSH in the Command Palette, or via the Open a Remote Window button in the bottom left. This extension has worked great for our internal development, but there are some known caveats and bugs:
  • We currently only support SSHing into Linux-based remote hosts.
  • The usual Microsoft “Remote - SSH” extension (and the open-remote-ssh extension) will not work—please do not install them, as they conflict with our support.
  • We don’t have all the features of the Microsoft SSH extension right now. We mostly just support the important thing: connecting to a host. If you have feature requests, let us know!
  • To access a devcontainer on a remote host after connecting via SSH, use the Command Palette (Ctrl/Cmd+Shift+P) and choose one of the following options:
  • SSH agent-forwarding is on by default, and will use Devin Desktop’s latest connection to that host. If you’re having trouble with it, try reloading the window to refresh the connection.
  • On Windows, you’ll see some cmd.exe windows when it asks for your password. This is expected—we’ll get rid of them soon.
  • If you have issues, please first make sure that you can ssh into your remote host using regular ssh in a terminal. If the problem persists, include the output from the Output > Remote SSH (Devin) tab in any bug reports!

Dev Containers

Devin Desktop supports Development Containers on Mac, Windows, and Linux for both local and remote (via SSH) workflows. Prerequisites:
  • Local: Docker must be installed on your machine and accessible from the Devin Desktop terminal.
  • Remote over SSH: Connect to a remote host using Devin Desktop Remote-SSH. Docker must be installed and accessible on the remote host (from the remote shell). Your project should include a devcontainer.json or equivalent config.
Container image requirements:
  • A glibc-based Linux image (glibc 2.28 or later), x64 or arm64. Images that use musl libc, such as Alpine Linux, are not supported: there is no musl build of the Devin Desktop remote server.
  • The image must have sh, bash, and tar. Stock images such as ubuntu, debian:bookworm-slim, and node:24-slim connect without changes (editor, terminal, and extensions; see the next item for Devin Local). The image does not need curl, wget, or procps: when the container has no curl, the machine that runs Docker downloads the remote server and copies it into the container.
  • If a requirement is missing, the connection stops with a message that names it.
  • Devin Local in the container also needs CA certificates in the image (the ca-certificates package on Debian and Ubuntu). Slim images such as debian:bookworm-slim and ubuntu do not have them: the container opens and the terminal works, but Devin Local does not start until you install ca-certificates.
Docker executable:
  • Dev Containers runs docker from your PATH by default. To use a different executable, set remote.devinDevContainers.dockerPath in Devin User Settings to its name or full path. This is one value for all windows and hosts: in a Remote-SSH or WSL window, the same value is used on that host.
  • remote.devinDevContainers.dockerComposePath sets the Docker Compose executable. It is used only when the Docker executable has no compose subcommand.
  • Podman is not supported yet.
Available commands (in both local and remote windows):
  1. Dev Containers: Open Folder in Container
    • Open a new workspace using a specified devcontainer.json.
  2. Dev Containers: Reopen in Container
    • Reopen the current workspace in a new container defined by your devcontainer.json.
  3. Dev Containers: Attach to Running Container
    • Attach to an existing Docker container and connect your current workspace to it. If the container does not follow the Development Container Specification, Devin Desktop will attempt best-effort detection of the remote user and environment.
  4. Dev Containers: Rebuild Container and Dev Containers: Rebuild Container Without Cache
    • When connected to a development container that was created from a devcontainer.json, remove the container, create it again from the current configuration, and reconnect the window. Without Cache also builds the image without the Docker build cache. If the build fails, the existing container is kept.
  5. Dev Containers: Rebuild and Reopen in Container
    • From a local, SSH, or WSL window, reopen the current workspace in a container that is created again from the current configuration.
  6. Dev Containers: Reopen Folder Locally
    • When connected to a development container, disconnect and reopen the workspace on the local filesystem.
  7. Dev Containers: Show Devin Desktop Dev Containers Log
    • Open the Dev Containers log output for troubleshooting.
These commands are available from the Command Palette and will also appear when you click the Open a Remote Window button in the bottom left (including when you are connected to a remote host via SSH). Related:
  • Remote Explorer: Focus on Dev Containers (Devin Desktop) View — quickly open the Dev Containers view.
Devin Desktop finds the configuration at .devcontainer/devcontainer.json, .devcontainer.json in the workspace root, or .devcontainer/<folder>/devcontainer.json. When you open a trusted folder that has a Dev Container configuration, Devin Desktop shows a notification that offers to reopen the folder in a container. Select Don't Show Again to turn the notification off for that folder, or turn off the remote.devinDevContainers.showReopenInContainerPrompt setting to turn it off for all folders. When you edit the devcontainer.json (or the Dockerfile or Docker Compose file it uses) while connected to the container, Devin Desktop shows a notification with a Rebuild action. A changed configuration applies only after a rebuild.

Workspace Trust

Opening a folder in a Dev Container runs commands from its devcontainer.json on your machine and in the container. Devin Desktop therefore asks you to trust the folder before it starts the container, with the standard Workspace Trust dialog. If you decline, no container is started and you can reopen the folder locally. A folder that is already trusted, or a disabled Workspace Trust (security.workspace.trust.enabled), shows no dialog. The container window is trusted when the folder on your machine is trusted.

Supported devcontainer.json properties

Devin Desktop applies these devcontainer.json properties when it connects to a container. Values from Dev Container Features and from image metadata are merged in, also for Dev Containers: Attach to Running Container. A change to remoteEnv or userEnvProbe applies the next time the window connects. For other properties, rebuild the container (Dev Containers: Rebuild Container) so that Devin Desktop creates the container again.

Closing the window

  • Devin Desktop follows the shutdownAction property. With stopContainer (the default for image and Dockerfile configurations) or stopCompose (the default for Docker Compose configurations), the container stops about 5 minutes after the last window that uses it closes. With none, the container keeps running.
  • Containers opened with Attach to Running Container are never stopped.

Lifecycle commands

Devin Desktop runs the Dev Container Specification lifecycle commands from devcontainer.json, from Features (devcontainer-feature.json), and from image metadata: Devin Desktop waits for the commands up to and including the one named by waitFor (default updateContentCommand) before the window connects. The remaining commands run in the background after the window opens, and a notification shows while they run. The output of every command is in the Dev Containers log (Dev Containers: Show Devin Desktop Dev Containers Log). If a command fails, Devin Desktop shows an error that names the command. A failure in a command that the window waits for stops the connection; a failure in a background command leaves the window connected. Dev Containers: Attach to Running Container runs the lifecycle commands that the container’s Dev Container metadata defines. A container without that metadata runs none. To turn lifecycle commands off, set remote.devinDevContainers.lifecycleCommands.enabled to false in your user settings. Devin Desktop then runs none of the commands that run in the container (onCreateCommand to postAttachCommand) and installs no dotfiles when it opens a Dev Container. The setting does not turn off initializeCommand: it always runs on the host, and the folder must still be trusted.

Dotfiles

Devin Desktop can clone a dotfiles repository into each Dev Container and run its install script after the container is created. Set these in your user settings: These settings are read from user settings only, so a workspace cannot set them. The container image must have git installed.

WSL (Beta)

As of version 1.1.0, Devin Desktop has beta support for Windows Subsystem for Linux. You must already have WSL set up and configured on your Windows machine. You can access WSL by clicking on the Open a Remote Window button in the bottom left, or under Remote-WSL in the Command Palette.

Extension Marketplace

By default, Devin Desktop downloads extensions from an Open VSX mirror. To use a different marketplace, open Devin Settings and go to the Extensions section, then update both marketplace URLs: The here link in the marketplace message at the top of the Extensions view also opens these settings. You can also set the setting IDs directly in your editor settings.json. Restart Devin Desktop after changing either value to use the new marketplace.

Devin Desktop Plugins

Search “Devin Pyright” or paste in @id:codeium.windsurfPyright in the extensions search bar.