Skip to content

Bundle the official Claude Code CLI devcontainer Feature - #25

Merged
TomProkop merged 2 commits into
masterfrom
claude/org-cloud-environments-agentbox-ma78p3
Aug 24, 2026
Merged

Bundle the official Claude Code CLI devcontainer Feature#25
TomProkop merged 2 commits into
masterfrom
claude/org-cloud-environments-agentbox-ma78p3

Conversation

@TomProkop

Copy link
Copy Markdown
Member

Summary

  • Adds ghcr.io/anthropics/devcontainer-features/claude-code:1.0 (the official Anthropic-published Feature) to devcontainer.features.json, so claude is now bundled the same low-effort way copilot-cli already is, across all three agentbox surfaces (Claude Code cloud, Copilot cloud sandbox, Codespaces/pre-built image) via the single shared manifest.
  • install-features.sh: skips the Feature's own install when claude is already on PATH — Claude Code cloud environments ship it pre-installed, and the Feature's install.sh has no such check itself (it would otherwise npm install -g it on every setup-script run for no reason).
  • install-features.sh: symlinks claude into /usr/local/bin alongside the existing node/npm/npx/corepack symlinks — claude-code installs into the same nvm-managed npm global bin dir, which is only on PATH within the script's own shell (via the node Feature's containerEnv eval), not in any later non-login shell (GitHub Actions step, Claude Code's Bash tool, docker run ... bash -c). Without this, claude would be unreachable everywhere except during the setup script's own run — the same class of bug already fixed for node/npm.
  • Adds claude to the final "Tool check" report.

Test plan

Verified end-to-end in a clean ubuntu:24.04 container (not through Docker build, via direct script run pointed at this branch):

  • Fresh install: claude-code Feature installs successfully (Claude Code CLI installed successfully! 2.1.241), reported OK in the Tool check.
  • Re-run with claude already installed: the skip guard fires (claude already present ..., skipping ... install) instead of reinstalling.
  • claude resolves via /usr/local/bin/claude (symlink to nvm's current bin dir) from a brand-new non-login shell (docker exec ... bash -c "claude --version"), confirming it survives outside the script's own shell — matches how node/npm were already verified to need this.
  • All other tools in the Tool check loop remain OK (an earlier terraform GPG-verification failure in one run was a transient/unrelated flake, not reproduced on rerun).

Generated by Claude Code

claude added 2 commits August 24, 2026 11:38
Anthropic publishes ghcr.io/anthropics/devcontainer-features/claude-code:1.0,
so claude can be installed the same low-effort way copilot-cli already is,
across all three agentbox surfaces via the shared features manifest.

Skip the Feature's own install when claude is already on PATH (Claude Code
cloud environments ship it pre-installed, and the Feature's install.sh has
no such check itself — it would otherwise npm-reinstall it every run).
claude-code installs via nvm-managed npm's global bin dir, same as
node/npm/npx/corepack — without this it was only reachable from within
install-features.sh's own shell (where the node Feature's containerEnv
eval had already put nvm's bin dir on PATH), not from any later shell.
@TomProkop
TomProkop merged commit 43c2f72 into master Aug 24, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants