--mount-git-worktree-common-dir silently ignored when devcontainer.json sets a custom workspaceMount #1243
Description
Summary
--mount-git-worktree-common-dir (added in #1127) has no effect when the devcontainer.json defines a custom workspaceMount. The worktree common-dir bind mount is never added, so in-container git fails with fatal: not a git repository for any git worktree whose devcontainer uses a custom workspaceMount.
Root cause
In src/spec-node/utils.ts (getWorkspaceConfiguration, ~L386) the entire worktree detection + common-dir mount block is guarded by:
if (workspace && (!workspaceFolder || !('workspaceMount' in config))) { ... }When workspaceMount is present, the block is skipped — the .git file is never read, the common dir is never resolved, and no mount is added. (Flagged as a possible oversight by Jérémy Lal (@kapouer) in #796, Mar 2026.)
Reproduction (CLI 0.82.0, git 2.52)
git init main && (cd main && git commit --allow-empty -m init && git worktree add --relative-paths ../wt)- Add
wt/.devcontainer/devcontainer.jsonwith a customworkspaceMount, e.g.:{ "image": "mcr.microsoft.com/devcontainers/base:debian", "workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind", "workspaceFolder": "/workspace" } devcontainer up --workspace-folder wt --mount-git-worktree-common-dir truedevcontainer exec --workspace-folder wt -- git -C /workspace status→fatal: not a git repository: (null)docker inspecton the container shows only the workspace bind mount; the worktree common dir was not mounted.
Removing workspaceMount makes it work — confirming the guard is the cause.
Expected
The common-dir mount should be computed and added even when a custom workspaceMount is set, by resolving the mount target relative to the configured workspaceMount target / workspaceFolder. This is the common case for monorepos that mount a parent directory and set workspaceFolder to a subpath. Relates to #796.
Workaround
Adding the common dir manually via a mounts entry (binding the main repo's .git to the path the worktree's .git file resolves to inside the container) restores in-container git — matching the maintainer's earlier suggestion in #796.
Activity
AvishayHirsh commentedon Jun 8, 2026
Workaround until this is fixed. The CLI skips the worktree common-dir mount whenever
workspaceMountis set — so add it yourself with amountsentry and--override-config. This script derives the correct mount for your worktree layout (sibling or nested) and brings the container up:CLI steps:
The override goes to a throwaway file, so your committed
devcontainer.jsonis untouched. (Prefer to make it permanent? run without--up, copy the printedmountsline intodevcontainer.json.)Layout-agnostic —
TARGET = normalize(<workspaceMount target> + <relative gitdir from .git> + /../..): nested worktree →/.git, sibling worktree →/<repo>/.git. Requires a relative-paths worktree (git worktree add --relative-paths, git ≥ 2.48).(VS Code / "Reopen in Container" variant: microsoft/vscode-remote-release#11478 (comment))
feat: agentic worktree dev environment (wt, devcontainer CLI, provisi…
Git inside a worktree's own devcontainer
Git inside a worktree's own devcontainer