Chore Type
Configuration change
Description
Add opt-in Tailscale SSH support to the devcontainer so developers can connect via direct mesh SSH instead of the devcontainer protocol. This is a workaround for Cursor GUI's inability to execute agent shell commands when connected via the devcontainer protocol.
When TAILSCALE_AUTHKEY is set (via docker-compose.local.yaml), the devcontainer installs Tailscale on first create and connects to the tailnet on every start with SSH enabled. When the env var is unset, the scripts are a no-op — zero impact on normal usage.
Acceptance Criteria
Implementation Notes
Files changed:
- New:
.devcontainer/scripts/setup-tailscale.sh — single script, two subcommands (install / start), idempotent, uses userspace networking (--tun=userspace-networking)
- Modified:
.devcontainer/scripts/post-create.sh — hooks setup-tailscale.sh install
- Modified:
.devcontainer/scripts/post-start.sh — adds SCRIPT_DIR resolution, hooks setup-tailscale.sh start
- Modified:
.devcontainer/README.md — new "Tailscale SSH" section
- New:
docs/tailscale-devcontainer.md — full design doc with architecture table, setup guide, known gap (git signing), and upstream notes
Related Issues
None
Priority
Medium
Changelog Category
Added
Chore Type
Configuration change
Description
Add opt-in Tailscale SSH support to the devcontainer so developers can connect via direct mesh SSH instead of the devcontainer protocol. This is a workaround for Cursor GUI's inability to execute agent shell commands when connected via the devcontainer protocol.
When
TAILSCALE_AUTHKEYis set (viadocker-compose.local.yaml), the devcontainer installs Tailscale on first create and connects to the tailnet on every start with SSH enabled. When the env var is unset, the scripts are a no-op — zero impact on normal usage.Acceptance Criteria
setup-tailscale.shscript withinstallandstartsubcommandspost-create.shcallssetup-tailscale.sh install(no-op withoutTAILSCALE_AUTHKEY)post-start.shcallssetup-tailscale.sh start(no-op withoutTAILSCALE_AUTHKEY).devcontainer/README.mdupdated with quick-start instructionsdocs/tailscale-devcontainer.mdcovering architecture decisions, user setup, known gaps, and upstream considerationsuv.lockupdated (incidental dependency sync)Implementation Notes
Files changed:
.devcontainer/scripts/setup-tailscale.sh— single script, two subcommands (install/start), idempotent, uses userspace networking (--tun=userspace-networking).devcontainer/scripts/post-create.sh— hookssetup-tailscale.sh install.devcontainer/scripts/post-start.sh— addsSCRIPT_DIRresolution, hookssetup-tailscale.sh start.devcontainer/README.md— new "Tailscale SSH" sectiondocs/tailscale-devcontainer.md— full design doc with architecture table, setup guide, known gap (git signing), and upstream notesRelated Issues
None
Priority
Medium
Changelog Category
Added