microsoft / microsoft/vscode-remote-release
Feature Request: Allow `devcontainer.json` to pass server-side startup args (e.g. `--enable-proposed-api`) to VS Code Server
@chrmarti is already working on this.
Since Apr 17, 2026.
- Dominant language
- Dockerfile
- Stars
- 4.2k
- Forks
- 469
- Avg merge
- 1d 1h
- Merged PRs (30d)
- 1
Description
Summary
When using Dev Containers, there is currently no way to configure the VS Code Server's startup arguments from devcontainer.json. Specifically, --enable-proposed-api can only be set via the local client's argv.json, which means a team cannot distribute this configuration as part of the dev container definition.
Motivation
The Missing Link for Standardized AI-Assisted Development
Modern AI-assisted development workflows increasingly rely on:
- Git worktrees — one worktree per feature branch, enabling isolated parallel development contexts
- Dev containers — per-worktree devcontainers for fully reproducible, hermetic environments
- Portless tunnel aliases (via
vscode.proposed.tunnelsor similar) — giving each worktree a stable, predictable, human-readable URL (e.g.my-app-feature-x.devtunnels.ms) instead of an ephemerallocalhost:XXXXXport
The combination delivers: standardized environment (devcontainer) + stable/independent verification endpoint (portless alias) = consistent, automatable CI/CD and AI agent review loops.
Today, the vscode.proposed.tunnels API is the only way to programmatically create portless named tunnel aliases from inside a container. But using it requires:
--enable-proposed-api=<extension-id>on the VS Code Server process- Which is only configurable via the local client's
argv.json
This breaks the devcontainer promise of a self-contained, shareable environment definition.
Current Workaround (Insufficient)
// devcontainer.json
{
"postCreateCommand": "echo '⚠️ Please add {\"enable-proposed-api\":[\"my.ext\"]} to your local argv.json'"
}
This requires every developer to manually edit a local file — untenable for team setups.
Proposed Solution
Option A: New customizations.vscode.serverArgs field
{
"customizations": {
"vscode": {
"extensions": ["my-publisher.my-extension"],
"settings": { ... },
"serverArgs": {
"enable-proposed-api": ["my-publisher.my-extension"]
}
}
}
}
The Dev Containers extension would forward these args when spawning the VS Code Server process.
Option B: Image-level metadata label
Allow a Docker image label (similar to existing devcontainer.metadata) to declare required server args:
LABEL devcontainer.metadata='[{"serverArgs": {"enable-proposed-api": ["my-publisher.my-extension"]}}]'
This would let prebuilt images carry their required server configuration.
Security Considerations
enable-proposed-apionly affects which extensions already installed in the container can call proposed APIs — it does not grant new network or filesystem permissions- The devcontainer trust model (user explicitly opens/trusts the container) provides a natural gate
Reference
vscode.proposed.tunnelsd.ts: https://github.com/microsoft/vscode/blob/main/src/vscode-dts/vscode.proposed.tunnels.d.ts- Server option confirmed in source:
serverEnvironmentService.ts—'enable-proposed-api': OPTIONS['enable-proposed-api'] - Related issue: https://github.com/microsoft/vscode-remote-release/issues/9981
cc @alexr00 @chrmarti @connor4312
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.