Overview
Version 2.0.0 replaces the Ruby runtime with a single native binary in Rust while preserving v1.8.x deployment behavior by default.
Highlights
- Removes the Ruby runtime dependency entirely. One binary, no interpreter needed.
- Expanded platform support, including Windows Server 2025, RHEL 10, Ubuntu 26.04, CentOS Stream 10.
- Native systemd service management on Linux (no more SysV init.d compatibility layer).
- Native Windows Service Control Manager integration (no more
win32-daemongem). - Built-in throttle handling with coordinated backoff across worker threads.
deploy-localis now a subcommand of the agent binary, with added support for GitHub sources (including private repos) and S3.- Optional loopback-only command port for local diagnostics without restarting the agent.
- A set of opt-in security hardening flags for bundle validation, hook environments, and filesystem permissions.
Supported platforms
The agent has been tested on the following operating systems:
| OS | Versions | Architectures |
|---|---|---|
| Amazon Linux 2023 | latest | x86_64, aarch64 |
| Amazon Linux 2 | latest | x86_64, aarch64 |
| RHEL | 8, 9, 10 | x86_64, aarch64 |
| Oracle Linux | 8, 9, 10 | x86_64, aarch64 |
| Rocky Linux | 9, 10 | x86_64, aarch64 |
| CentOS Stream | 9, 10 | x86_64, aarch64 |
| SLES | 15 | x86_64, aarch64 |
| Debian | 11, 12, 13 | x86_64, aarch64 |
| Ubuntu Server | 16.04, 18.04, 20.04, 22.04, 24.04, 25.04, 26.04 | x86_64, aarch64 |
| Windows Server | 2016, 2019, 2022, 2025 | x86_64 |
New in 2.0.0: Windows Server 2025, RHEL 10, Oracle Linux 8/9/10, Rocky Linux 9/10, CentOS Stream 9/10, SLES 15, Debian 11/12/13, and Ubuntu 24.04/25.04/26.04.
Upgrade notes
Existing deployments continue to work without configuration changes. Review the following before upgrading:
- Local deployment IDs changed. Local deploys now use the format
local-<pid>instead ofd-XXXXXXXXX-local. Scripts that key on this folder name need updating. - Core dumps disabled by default. The agent suppresses core dumps because it holds credentials in memory. Set
disable_core_dumps: falseif you need them for crash investigation. - Retired configuration keys are ignored. Keys like
children,shared_dir,user,instance_service_*, andcodedeploy_test_profileno longer have any effect. Each is logged once on startup. - Credential refresh. Rotated credentials are picked up in place without restarting the agent or failing long-running deployments.
Security improvements
The new agent introduces opt-in hardening controls. All default to v1-compatible behavior unless you enable them:
reject_symlinks_in_bundle— reject bundles containing symlinks or hardlinks.reject_path_traversal_in_bundle— reject path-traversal attempts in archive entries and AppSpec fields.reject_unsafe_permissions_in_bundle— reject SUID/SGID files and modes.reject_unconfined_selinux_in_bundle— reject SELinux types that disable MAC.reject_symlink_permission_targets— reject symlinked destinations in AppSpecpermissions:blocks.ignore_ownership_in_bundle— ignore uid/gid from tar headers; own extracted files as the agent process.restrict_agent_dir_permissions— tighten agent directory and state file permissions.restrict_log_dir_permissions— tighten log directory permissions.restrict_hook_env_to_allowlist— limit hook environment to documented deployment variables only.strip_loader_env_in_hooks— stripLD_PRELOAD/LD_LIBRARY_PATH/LD_AUDITfrom hook environments.disable_powershell_profile_in_hooks— run PowerShell hooks with-NoProfile -NonInteractive.archive_max_extraction_size— cap uncompressed bundle size.
Always-on improvements (no flag needed):
- Hook timeout enforcement uses SIGTERM then SIGKILL, preventing indefinite hangs.
scripts.logis size-rotated (64 MiB x 8 files).- ANSI escape sequences are stripped from logs shipped to CodeDeploy.
Compatibility
The following remain unchanged from v1.8.x:
- AppSpec semantics (versions, file handling, permissions, ACLs, SELinux contexts)
- Deployment lifecycle event ordering
- Hook execution and rollback mapping
- Deployment archive structure and ETag verification
- PKCS7 signature verification
- On-disk layout and tracking files
- Existing configuration file syntax (including symbol-style
:key: valueformat) - Error codes
Full changelog
For the complete technical list of changes, see CHANGELOG.md.