Repository navigation
9.0.0 (2026-11-06)
📋 Summary
amp-devcontainer 9.0.0 introduces non-root development across all image flavors, adds GitHub CLI, and updates C++ and documentation tooling.
Note
Breaking change: containers now run as code instead of root.
The code account uses UID/GID 1000:1000, with its home directory at /home/code. VS Code and GitHub Codespaces also select this account by default.
When upgrading:
- Update scripts and configuration that assume
/root; prefer$HOMEfor user-specific paths. - Ensure mounted workspaces, caches, and volumes are writable by the container user. Existing root-owned files may need their ownership adjusted.
- In derived Dockerfiles, explicitly switch to
USER root(orUSER 0) before installing system packages or modifying system directories, then switch back toUSER code(orUSER 1000). - For CI jobs requiring administrative access, explicitly select root—for example,
container.options: --user 0in GitHub Actions ordocker run --user 0. Ordinary builds and tests should continue running ascode.
Warning
GitHub hosted runners require Actions to run as root
amp-devcontainer uses least-privileged execution by default, while allowing CI platforms to override runtime identity where required.
For GitHub hosted runners this requires:
container:
image: <container image>
options: --user 0
See: Dockerfile support and actions/checkout#956
amp-devcontainer-base
- Added GitHub CLI (
gh), available in every image flavor. - Updated the Ubuntu base image and refreshed certificate handling.
- Improved inherited devcontainer configuration so every flavor consistently uses the non-root account.
amp-devcontainer-cpp and amp-devcontainer-embedded-cpp
- Updated Mull to 0.37.0, installing checksum-verified packages directly from GitHub Releases instead of the Mull APT repository.
- Updated gcovr to 8.8.
amp-devcontainer-docs
- Updated sbdl from 1.27.12 to 2.0.1. Review compatibility with your existing requirements models when upgrading.
Verification and release information
- Expanded integration checks for included tools.
- Release tool tables now include commands and library files alongside versions recorded in each image’s SBOM.
🍨 Image flavors
| Flavor | Full identifier |
|---|---|
| base | |
| cpp | |
| docs | |
| embedded-cpp | |
| embedded-rust | |
| rust | |
🛠️ Included tools
The tables below list the most relevant packages per flavor, their versions from the image's Software Bill of Materials (SBOM), and the commands or library files checked by the integration tests.
amp-devcontainer-base
| Package | Version | Included commands | Included files |
|---|---|---|---|
| bats | 1.13.0 | bats | |
| bats-assert | 2.2.4 | /usr/local/bats-assert/load.bash | |
| bats-support | 0.3.0 | /usr/local/bats-support/load.bash | |
| gh | 2.103.3 | gh | |
| git | 1:2.53.0-1ubuntu1.1 | git | |
| gnupg2 | 2.4.8-4ubuntu3.1 | gpg | |
| wget | 1.25.0-2ubuntu4.4 | wget |
amp-devcontainer-cpp
| Package | Version | Included commands | Included files |
|---|---|---|---|
| bats | 1.13.0 | bats | |
| bats-assert | 2.2.4 | /usr/local/bats-assert/load.bash | |
| bats-support | 0.3.0 | /usr/local/bats-support/load.bash | |
| ccache | 4.13.1 | ccache | |
| clang-22 | 1:22.1.2-1ubuntu1 | clang-22, clang++-22, clang-cpp-22 | |
| clang-format-22 | 1:22.1.2-1ubuntu1 | clang-format-22 | |
| clang-tidy-22 | 1:22.1.2-1ubuntu1 | clang-tidy-22 | |
| clang-tools-22 | 1:22.1.2-1ubuntu1 | clang-check-22, clang-doc-22, clang-include-cleaner-22, clang-move-22, clang-query-22, clang-refactor-22 | |
| clangd-22 | 1:22.1.2-1ubuntu1 | clangd-22 | |
| cmake | 4.4.4 | cmake | |
| conan | 2.34.0 | conan | |
| g++-15 | 15.2.0-16ubuntu1 | g++-15 | |
| gcovr | 8.8 | gcovr | |
| gdb-multiarch | 17.1-2ubuntu1 | gdb, gdb-multiarch | |
| gh | 2.103.3 | gh | |
| git | 1:2.53.0-1ubuntu1.1 | git | |
| gnupg2 | 2.4.8-4ubuntu3.1 | gpg | |
| include-what-you-use | 0.26 | iwyu | |
| lld-22 | 1:22.1.2-1ubuntu1 | ld.lld-22 | |
| llvm-22 | 1:22.1.2-1ubuntu1 | llvm-ar-22, llvm-as-22, llvm-cxxfilt-22, llvm-cov-22, llvm-link-22, llvm-nm-22, llvm-objcopy-22, llvm-objdump-22, llvm-readelf-22 | |
| mull-22 | 0.37.0 | mull-instrument, mull-runner, mull-reporter | /usr/lib/mull-ir-frontend-22 |
| ninja-build | 1.13.2-1 | ninja | |
| wget | 1.25.0-2ubuntu4.4 | wget | |
| xwin | 0.10.0 | xwin |
amp-devcontainer-docs
| Package | Version | Included commands | Included files |
|---|---|---|---|
| bats | 1.13.0 | bats | |
| bats-assert | 2.2.4 | /usr/local/bats-assert/load.bash | |
| bats-support | 0.3.0 | /usr/local/bats-support/load.bash | |
| gh | 2.103.3 | gh | |
| git | 1:2.53.0-1ubuntu1.1 | git | |
| gnupg2 | 2.4.8-4ubuntu3.1 | gpg | |
| graphviz | 14.1.2-1ubuntu1 | dot | |
| plantuml | 1:1.2020.2+ds-6build1 | plantuml | |
| python3-pip | 25.1.1+dfsg-1ubuntu2 | pip | |
| sbdl | 2.0.1 | sbdl | |
| wget | 1.25.0-2ubuntu4.4 | wget |
amp-devcontainer-embedded-cpp
| Package | Version | Included commands | Included files |
|---|---|---|---|
| arm-gnu-toolchain | 15.2.rel1 | arm-none-eabi-gcc, arm-none-eabi-g++, arm-none-eabi-as, arm-none-eabi-ld, arm-none-eabi-objcopy, arm-none-eabi-objdump, arm-none-eabi-readelf | |
| bats | 1.13.0 | bats | |
| bats-assert | 2.2.4 | /usr/local/bats-assert/load.bash | |
| bats-support | 0.3.0 | /usr/local/bats-support/load.bash | |
| ccache | 4.13.1 | ccache | |
| clang-22 | 1:22.1.2-1ubuntu1 | clang-22, clang++-22, clang-cpp-22 | |
| clang-format-22 | 1:22.1.2-1ubuntu1 | clang-format-22 | |
| clang-tidy-22 | 1:22.1.2-1ubuntu1 | clang-tidy-22 | |
| clang-tools-22 | 1:22.1.2-1ubuntu1 | clang-check-22, clang-doc-22, clang-include-cleaner-22, clang-move-22, clang-query-22, clang-refactor-22 | |
| clangd-22 | 1:22.1.2-1ubuntu1 | clangd-22 | |
| cmake | 4.4.4 | cmake | |
| conan | 2.34.0 | conan | |
| g++-15 | 15.2.0-16ubuntu1 | g++-15 | |
| gcovr | 8.8 | gcovr | |
| gdb-multiarch | 17.1-2ubuntu1 | gdb, gdb-multiarch | |
| gh | 2.103.3 | gh | |
| git | 1:2.53.0-1ubuntu1.1 | git | |
| gnupg2 | 2.4.8-4ubuntu3.1 | gpg | |
| include-what-you-use | 0.26 | iwyu | |
| lld-22 | 1:22.1.2-1ubuntu1 | ld.lld-22 | |
| llvm-22 | 1:22.1.2-1ubuntu1 | llvm-ar-22, llvm-as-22, llvm-cxxfilt-22, llvm-cov-22, llvm-link-22, llvm-nm-22, llvm-objcopy-22, llvm-objdump-22, llvm-readelf-22 | |
| mull-22 | 0.37.0 | mull-instrument, mull-runner, mull-reporter | /usr/lib/mull-ir-frontend-22 |
| ninja-build | 1.13.2-1 | ninja | |
| wget | 1.25.0-2ubuntu4.4 | wget | |
| xsltproc | 1.1.45-0.1 | xsltproc | |
| xwin | 0.10.0 | xwin |
amp-devcontainer-embedded-rust
| Package | Version | Included commands | Included files |
|---|---|---|---|
| bats | 1.13.0 | bats | |
| bats-assert | 2.2.4 | /usr/local/bats-assert/load.bash | |
| bats-support | 0.3.0 | /usr/local/bats-support/load.bash | |
| cargo-binstall | 1.21.0 | cargo-binstall | |
| cargo-binutils | 0.3.6 | rust-ar, cargo-cov, cargo-nm, cargo-objcopy, cargo-objdump, cargo-profdata, cargo-readobj, cargo-size, cargo-strip | |
| cargo-mutants | 25.3.1 | cargo-mutants | |
| flip-link | 0.1.12 | flip-link | |
| g++-15 | 15.2.0-16ubuntu1 | g++-15 | |
| gh | 2.103.3 | gh | |
| git | 1:2.53.0-1ubuntu1.1 | git | |
| gnupg2 | 2.4.8-4ubuntu3.1 | gpg | |
| probe-rs-tools | 0.31.0 | probe-rs, cargo-embed, cargo-flash | |
| rust | 1.94.1 | rustc, cargo, rustfmt, cargo-clippy | |
| rustup | 1.27.1-8 | rustup | |
| wget | 1.25.0-2ubuntu4.4 | wget |
amp-devcontainer-rust
| Package | Version | Included commands | Included files |
|---|---|---|---|
| bats | 1.13.0 | bats | |
| bats-assert | 2.2.4 | /usr/local/bats-assert/load.bash | |
| bats-support | 0.3.0 | /usr/local/bats-support/load.bash | |
| cargo-binstall | 1.21.0 | cargo-binstall | |
| cargo-binutils | 0.3.6 | rust-ar, cargo-cov, cargo-nm, cargo-objcopy, cargo-objdump, cargo-profdata, cargo-readobj, cargo-size, cargo-strip | |
| cargo-mutants | 25.3.1 | cargo-mutants | |
| g++-15 | 15.2.0-16ubuntu1 | g++-15 | |
| gh | 2.103.3 | gh | |
| git | 1:2.53.0-1ubuntu1.1 | git | |
| gnupg2 | 2.4.8-4ubuntu3.1 | gpg | |
| rust | 1.94.1 | rustc, cargo, rustfmt, cargo-clippy | |
| rustup | 1.27.1-8 | rustup | |
| wget | 1.25.0-2ubuntu4.4 | wget |
⚠ BREAKING CHANGES
- add
codecontainer user to replaceroot(#1501)
Features
- Add
codecontainer user to replaceroot(#1501) (adf549b) - Add GitHub cli to amp-devcontainer-base (#1517) (740a93b)