Skip to content

Dev containers: "remoteUser" not honored and wrong shell is opened #46252

@rapgenic

Description

@rapgenic

Reproduction steps

  1. Create a devcontainer.json file with the following contents:
    {
        "image":"mcr.microsoft.com/devcontainers/base:ubuntu"
    }
  2. Reopen the folder inside the container
  3. Open a terminal inside Zed, within the container
  4. Execute the whoami command
  5. Execute the echo $0 command

Current vs. Expected behavior

Image

When the project is opened in VScode, the current user is vscode (as specified in remoteUser parameter in the upstream devcontainer.json, see https://github.com/devcontainers/images/blob/main/src/base-ubuntu/.devcontainer/devcontainer.json) and the shell bash, which is the default shell for the vscode user.

When the project is opened in Zed, the current user is always root and only sh is used

Zed version and system specs

Zed: v0.218.5+preview.108.2ab92ad7fdf12d7aa78139c266423e564cb79c82 (Zed Preview)
OS: Linux Wayland fedora 43
Memory: 7.4 GiB
Architecture: x86_64
GPU: Intel(R) Iris(R) Xe Graphics (TGL GT2) || Intel open-source Mesa driver || Mesa 25.2.7

Attach Zed log file

Zed.log
2026-01-07T13:38:17+01:00 INFO  [zed] ========== starting zed version 0.218.3+preview.104.4adf4c6c1dc3cad2cb35273ee707812c6874ac3b, sha 4adf4c6 ==========
2026-01-07T13:38:18+01:00 WARN  [fontdb] Failed to load a font face 0 from '/home/ggirardi/.local/share/fonts/10chrset.ttf' cause font doesn't have a family name.
2026-01-07T13:38:18+01:00 INFO  [crashes] spawning crash handler process
2026-01-07T13:38:18+01:00 INFO  [crashes] connected to crash handler process after 100ms
2026-01-07T13:38:18+01:00 INFO  [crashes] crash handler registered
2026-01-07T13:38:18+01:00 INFO  [extension_host] extensions updated. loading 23, reloading 0, unloading 0
2026-01-07T13:38:18+01:00 INFO  [gpui::platform::linux::platform] activate is not implemented on Linux, ignoring the call
2026-01-07T13:38:18+01:00 INFO  [auto_update] Auto Update: checking for updates
2026-01-07T13:38:18+01:00 INFO  [util] set environment variables from shell:/bin/bash, path:/home/ggirardi/.cargo/bin:/home/ggirardi/.local/bin:/home/ggirardi/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin
2026-01-07T13:38:18+01:00 INFO  [client] set status on client 0: Authenticating
2026-01-07T13:38:18+01:00 INFO  [gpui::platform::blade::blade_renderer] Initializing Blade pipelines for surface SurfaceInfo { format: Bgra8Unorm, alpha: PreMultiplied }
2026-01-07T13:38:18+01:00 INFO  [workspace] Rendered first frame
2026-01-07T13:38:18+01:00 INFO  [zed::zed] Using GPU: GpuSpecs { is_software_emulated: false, device_name: "Intel(R) Iris(R) Xe Graphics (TGL GT2)", driver_name: "Intel open-source Mesa driver", driver_info: "Mesa 25.2.7" }
2026-01-07T13:38:18+01:00 INFO  [extension_host] installing extension make 1.1.2
2026-01-07T13:38:19+01:00 INFO  [client] set status on client 138096: Authenticated
2026-01-07T13:38:20+01:00 INFO  [extension_host] installing extension matlab 0.1.0
2026-01-07T13:38:20+01:00 INFO  [extension_host] rebuilt extension index in 33.157195ms
2026-01-07T13:38:20+01:00 INFO  [extension_host] extensions updated. loading 0, reloading 1, unloading 0
2026-01-07T13:38:21+01:00 INFO  [extension_host] rebuilt extension index in 17.872893ms
2026-01-07T13:38:21+01:00 INFO  [extension_host] extensions updated. loading 0, reloading 0, unloading 1
2026-01-07T13:38:22+01:00 INFO  [extension_host] rebuilt extension index in 17.42002ms
2026-01-07T13:38:22+01:00 INFO  [extension_host] extensions updated. loading 1, reloading 0, unloading 0
2026-01-07T13:38:57+01:00 INFO  [auto_update] downloaded update. path:"/tmp/zed-auto-updateqV6saZ/zed.tar.gz"
2026-01-07T13:39:07+01:00 INFO  [gpui::platform::linux::platform] Restarting process, using app path: "/home/ggirardi/.local/zed-preview.app/libexec/zed-editor"
2026-01-07T13:39:07+01:00 INFO  [zed] ========== starting zed version 0.218.5+preview.108.2ab92ad7fdf12d7aa78139c266423e564cb79c82, sha 2ab92ad ==========
2026-01-07T13:39:07+01:00 WARN  [fontdb] Failed to load a font face 0 from '/home/ggirardi/.local/share/fonts/10chrset.ttf' cause font doesn't have a family name.
2026-01-07T13:39:08+01:00 INFO  [crashes] spawning crash handler process
2026-01-07T13:39:08+01:00 INFO  [extension_host] extensions updated. loading 23, reloading 0, unloading 0
2026-01-07T13:39:08+01:00 INFO  [crashes] connected to crash handler process after 100ms
2026-01-07T13:39:08+01:00 INFO  [crashes] crash handler registered
2026-01-07T13:39:08+01:00 INFO  [gpui::platform::linux::platform] activate is not implemented on Linux, ignoring the call
2026-01-07T13:39:08+01:00 INFO  [auto_update] Auto Update: checking for updates
2026-01-07T13:39:08+01:00 INFO  [client] set status on client 0: Authenticating
2026-01-07T13:39:08+01:00 INFO  [gpui::platform::blade::blade_renderer] Initializing Blade pipelines for surface SurfaceInfo { format: Bgra8Unorm, alpha: PreMultiplied }
2026-01-07T13:39:08+01:00 INFO  [workspace] Rendered first frame
2026-01-07T13:39:08+01:00 INFO  [zed::zed] Using GPU: GpuSpecs { is_software_emulated: false, device_name: "Intel(R) Iris(R) Xe Graphics (TGL GT2)", driver_name: "Intel open-source Mesa driver", driver_info: "Mesa 25.2.7" }
2026-01-07T13:39:08+01:00 INFO  [util] set environment variables from shell:/bin/bash, path:/home/ggirardi/.cargo/bin:/home/ggirardi/.local/bin:/home/ggirardi/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin
2026-01-07T13:39:09+01:00 INFO  [client] set status on client 138096: Authenticated
2026-01-07T13:39:11+01:00 ERROR [recent_projects::dev_container] Unable to find devcontainer CLI in $PATH. Checking for a zed installed version. Error: Os { code: 2, kind: NotFound, message: "No such file or directory" }
2026-01-07T13:39:12+01:00 INFO  [recent_projects::dev_container] Found devcontainer CLI in Data dir
2026-01-07T13:39:14+01:00 ERROR [remote::transport::docker] $SHELL is not set, falling back to sh
2026-01-07T13:39:23+01:00 INFO  [remote_server::unix] (remote server) starting up. pid_file: "/root/.local/share/zed/server_state/preview-workspace-12/server.pid", stdin_socket: "/root/.local/share/zed/server_state/preview-workspace-12/stdin.sock", stdout_socket: "/root/.local/share/zed/server_state/preview-workspace-12/stdout.sock", stderr_socket: "/root/.local/share/zed/server_state/preview-workspace-12/stderr.sock"
2026-01-07T13:39:23+01:00 INFO  [crashes] (remote server) spawning crash handler process
2026-01-07T13:39:23+01:00 INFO  [util] (remote server) updating SHELL environment variable to value from passwd entry: "/bin/bash"
2026-01-07T13:39:23+01:00 INFO  [remote_server::unix] (remote server) gpui app started, initializing server
2026-01-07T13:39:23+01:00 INFO  [util] (remote server) set environment variables from shell:/bin/bash, path:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/.local/bin
2026-01-07T13:39:23+01:00 INFO  [remote_server::unix] (remote server) accepting new connections
2026-01-07T13:39:23+01:00 ERROR [remote::remote_client] client:unhandled ssh message name:UpdateProject
2026-01-07T13:39:23+01:00 INFO  [zed::zed] Using GPU: GpuSpecs { is_software_emulated: false, device_name: "Intel(R) Iris(R) Xe Graphics (TGL GT2)", driver_name: "Intel open-source Mesa driver", driver_info: "Mesa 25.2.7" }
2026-01-07T13:39:23+01:00 INFO  [crashes] (remote server) connected to crash handler process after 100ms
2026-01-07T13:39:23+01:00 INFO  [crashes] (remote server) crash handler registered
2026-01-07T13:39:23+01:00 INFO  [extension_host::headless_host] (remote server) failed to load extension: bitbake, No extension manifest found for extension bitbake
2026-01-07T13:39:23+01:00 INFO  [extension_host::headless_host] (remote server) failed to load extension: devicetree, No extension manifest found for extension devicetree
2026-01-07T13:39:23+01:00 INFO  [extension_host::headless_host] (remote server) failed to load extension: docker-compose, No extension manifest found for extension docker-compose
2026-01-07T13:39:23+01:00 INFO  [extension_host::headless_host] (remote server) failed to load extension: dockerfile, No extension manifest found for extension dockerfile
2026-01-07T13:39:23+01:00 INFO  [extension_host::headless_host] (remote server) failed to load extension: html, No extension manifest found for extension html
2026-01-07T13:39:23+01:00 INFO  [extension_host::headless_host] (remote server) failed to load extension: latex, No extension manifest found for extension latex
2026-01-07T13:39:23+01:00 INFO  [extension_host::headless_host] (remote server) failed to load extension: matlab, No extension manifest found for extension matlab
2026-01-07T13:39:23+01:00 INFO  [extension_host::headless_host] (remote server) failed to load extension: neocmake, No extension manifest found for extension neocmake
2026-01-07T13:39:23+01:00 INFO  [extension_host::headless_host] (remote server) failed to load extension: nginx, No extension manifest found for extension nginx
2026-01-07T13:39:23+01:00 INFO  [extension_host::headless_host] (remote server) failed to load extension: php, No extension manifest found for extension php
2026-01-07T13:39:23+01:00 INFO  [extension_host::headless_host] (remote server) failed to load extension: scss, No extension manifest found for extension scss
2026-01-07T13:39:23+01:00 INFO  [extension_host::headless_host] (remote server) failed to load extension: verilog, No extension manifest found for extension verilog
2026-01-07T13:39:23+01:00 INFO  [extension_host::headless_host] (remote server) failed to load extension: vhdl, No extension manifest found for extension vhdl
2026-01-07T13:39:23+01:00 INFO  [extension_host] Uploading extension bitbake to RemotePathBuf { style: Posix, string: "/root/.local/share/zed/remote_extensions/uploads/bitbake" }
2026-01-07T13:39:24+01:00 INFO  [extension_host] Finished uploading extension bitbake
2026-01-07T13:39:24+01:00 INFO  [extension_host::headless_host] (remote server) Loaded language server: bitbake
2026-01-07T13:39:24+01:00 INFO  [extension_host] Uploading extension devicetree to RemotePathBuf { style: Posix, string: "/root/.local/share/zed/remote_extensions/uploads/devicetree" }
2026-01-07T13:39:25+01:00 INFO  [extension_host] Finished uploading extension devicetree
2026-01-07T13:39:25+01:00 INFO  [extension_host::headless_host] (remote server) Loaded language server: devicetree
2026-01-07T13:39:25+01:00 INFO  [extension_host] Uploading extension docker-compose to RemotePathBuf { style: Posix, string: "/root/.local/share/zed/remote_extensions/uploads/docker-compose" }
2026-01-07T13:39:25+01:00 INFO  [extension_host] Finished uploading extension docker-compose
2026-01-07T13:39:25+01:00 INFO  [extension_host::headless_host] (remote server) Loaded language server: docker-compose
2026-01-07T13:39:25+01:00 INFO  [extension_host] Uploading extension dockerfile to RemotePathBuf { style: Posix, string: "/root/.local/share/zed/remote_extensions/uploads/dockerfile" }
2026-01-07T13:39:26+01:00 INFO  [extension_host] Finished uploading extension dockerfile
2026-01-07T13:39:26+01:00 INFO  [extension_host::headless_host] (remote server) Loaded language server: dockerfile-language-server
2026-01-07T13:39:26+01:00 INFO  [extension_host::headless_host] (remote server) Loaded debug adapter: buildx-dockerfile
2026-01-07T13:39:26+01:00 INFO  [extension_host] Uploading extension html to RemotePathBuf { style: Posix, string: "/root/.local/share/zed/remote_extensions/uploads/html" }
2026-01-07T13:39:26+01:00 INFO  [extension_host] Finished uploading extension html
2026-01-07T13:39:27+01:00 INFO  [extension_host::headless_host] (remote server) Loaded language server: vscode-html-language-server
2026-01-07T13:39:27+01:00 INFO  [extension_host] Uploading extension latex to RemotePathBuf { style: Posix, string: "/root/.local/share/zed/remote_extensions/uploads/latex" }
2026-01-07T13:39:27+01:00 INFO  [extension_host] Finished uploading extension latex
2026-01-07T13:39:27+01:00 INFO  [extension_host::headless_host] (remote server) Loaded language server: texlab
2026-01-07T13:39:27+01:00 INFO  [extension_host] Uploading extension matlab to RemotePathBuf { style: Posix, string: "/root/.local/share/zed/remote_extensions/uploads/matlab" }
2026-01-07T13:39:28+01:00 INFO  [extension_host] Finished uploading extension matlab
2026-01-07T13:39:28+01:00 INFO  [extension_host::headless_host] (remote server) Loaded language server: matlab-language-server
2026-01-07T13:39:28+01:00 INFO  [extension_host] Uploading extension neocmake to RemotePathBuf { style: Posix, string: "/root/.local/share/zed/remote_extensions/uploads/neocmake" }
2026-01-07T13:39:29+01:00 INFO  [extension_host] Finished uploading extension neocmake
2026-01-07T13:39:29+01:00 INFO  [extension_host::headless_host] (remote server) Loaded language server: cmake
2026-01-07T13:39:29+01:00 INFO  [extension_host] Uploading extension nginx to RemotePathBuf { style: Posix, string: "/root/.local/share/zed/remote_extensions/uploads/nginx" }
2026-01-07T13:39:29+01:00 INFO  [extension_host] Finished uploading extension nginx
2026-01-07T13:39:29+01:00 INFO  [extension_host::headless_host] (remote server) Loaded language server: nginx
2026-01-07T13:39:29+01:00 INFO  [extension_host] Uploading extension php to RemotePathBuf { style: Posix, string: "/root/.local/share/zed/remote_extensions/uploads/php" }
2026-01-07T13:39:30+01:00 INFO  [extension_host] Finished uploading extension php
2026-01-07T13:39:30+01:00 INFO  [extension_host::headless_host] (remote server) Loaded language server: intelephense
2026-01-07T13:39:30+01:00 INFO  [extension_host::headless_host] (remote server) Loaded language server: phpactor
2026-01-07T13:39:30+01:00 INFO  [extension_host::headless_host] (remote server) Loaded language server: phptools
2026-01-07T13:39:30+01:00 INFO  [extension_host::headless_host] (remote server) Loaded debug adapter: Xdebug
2026-01-07T13:39:30+01:00 INFO  [extension_host] Uploading extension scss to RemotePathBuf { style: Posix, string: "/root/.local/share/zed/remote_extensions/uploads/scss" }
2026-01-07T13:39:30+01:00 INFO  [extension_host] Finished uploading extension scss
2026-01-07T13:39:31+01:00 INFO  [extension_host::headless_host] (remote server) Loaded language server: scss-lsp
2026-01-07T13:39:31+01:00 INFO  [extension_host::headless_host] (remote server) Loaded language server: some-sass-lsp
2026-01-07T13:39:31+01:00 INFO  [extension_host] Uploading extension verilog to RemotePathBuf { style: Posix, string: "/root/.local/share/zed/remote_extensions/uploads/verilog" }
2026-01-07T13:39:31+01:00 INFO  [extension_host] Finished uploading extension verilog
2026-01-07T13:39:31+01:00 INFO  [extension_host::headless_host] (remote server) Loaded language server: slang
2026-01-07T13:39:31+01:00 INFO  [extension_host::headless_host] (remote server) Loaded language server: verible
2026-01-07T13:39:31+01:00 INFO  [extension_host::headless_host] (remote server) Loaded language server: veridian
2026-01-07T13:39:31+01:00 INFO  [extension_host] Uploading extension vhdl to RemotePathBuf { style: Posix, string: "/root/.local/share/zed/remote_extensions/uploads/vhdl" }
2026-01-07T13:39:32+01:00 INFO  [extension_host] Finished uploading extension vhdl
2026-01-07T13:39:33+01:00 INFO  [extension_host::headless_host] (remote server) Loaded language server: vhdl_ls
2026-01-07T13:42:04+01:00 INFO  [remote_server::unix] (remote server) Got new node settings: NodeBinarySettings { path: None, npm_path: None, ignore_system_version: false }
2026-01-07T13:42:04+01:00 INFO  [project::lsp_store] (remote server) Waiting for worktree "/workspaces/test3" to be trusted, before starting language server json-language-server
2026-01-07T13:42:04+01:00 INFO  [project::prettier_store] (remote server) Initializing default prettier with plugins {}
2026-01-07T13:42:04+01:00 INFO  [node_runtime] (remote server) Node runtime install_if_needed
2026-01-07T13:42:04+01:00 INFO  [node_runtime] (remote server) Downloading Node.js binary from https://nodejs.org/dist/v24.11.0/node-v24.11.0-linux-x64.tar.gz
2026-01-07T13:42:04+01:00 INFO  [node_runtime] (remote server) Download of Node.js complete, extracting...
2026-01-07T13:42:19+01:00 INFO  [node_runtime] (remote server) Extracted Node.js to /root/.local/share/zed/node
2026-01-07T13:42:19+01:00 INFO  [node_runtime] (remote server) using Zed managed Node.js at /root/.local/share/zed/node/node-v24.11.0-linux-x64 since system Node.js wasn't found on PATH: cannot find binary path
2026-01-07T13:42:20+01:00 INFO  [project::prettier_store] (remote server) Installing default prettier and plugins: [("prettier", "3.7.4")]
2026-01-07T13:42:21+01:00 INFO  [project::prettier_store] (remote server) Initialized default prettier with plugins: {}
2026-01-07T13:50:13+01:00 WARN  [terminal::terminal_hyperlinks] Timed out processing path hyperlink regexes after 3ms
2026-01-07T13:50:13+01:00 INFO  [terminal::terminal_hyperlinks] 1ms time out specified in `terminal.path_hyperlink_timeout_ms`
2026-01-07T13:50:45+01:00 INFO  [gpui::platform::blade::blade_renderer] Initializing Blade pipelines for surface SurfaceInfo { format: Bgra8Unorm, alpha: PreMultiplied }
2026-01-07T13:50:45+01:00 INFO  [zed::zed] Using GPU: GpuSpecs { is_software_emulated: false, device_name: "Intel(R) Iris(R) Xe Graphics (TGL GT2)", driver_name: "Intel open-source Mesa driver", driver_info: "Mesa 25.2.7" }

Relevant Zed settings

settings.json

Relevant Keymap

keymap.json

(for AI issues) Model provider details

No response

If you are using WSL on Windows, what flavor of Linux are you using?

None

Metadata

Metadata

Assignees

Labels

area:dev containersFeedback for Dev Containersfrequency:uncommonBugs that happen for a small subset of users, special configurations, rare circumstances, etcpriority:P2Average run-of-the-mill bugsstate:reproducibleVerified steps to reproduce included and someone on the team managed to reproduce

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions