Index
- TL;DR
-
Major Features
- ⚠️ Heads-Up Changes
- The CLI Now Knows When an AI Agent Is Driving
- The addDependency Fix Returns — Plus a Synth Performance Sweep
- Kinesis Data Firehose: HTTP Endpoint and Datadog Destinations
- DocumentDB Managed Master Password
- CloudWatch: Alarm Mute Rules and AT_LEAST Composite Alarms
- Glue Alpha Module: Big Overhaul Ahead of Stabilization
- CLI Improvements
- Service Enhancements
- Community Highlights
- Community Content & Resources
- How Can You Be Involved
Hey CDK community! Here's an update on everything that shipped in August 2026.
TL;DR
August was the month the CDK CLI became agent-aware: when a coding agent (Claude Code, Codex, Copilot CLI, and friends) runs cdk deploy, the CLI now automatically switches to a token-efficient "errors-only" progress mode — and you can opt into it yourself with --progress errors-only. The stack.node.addDependency performance fix that was reverted in July re-landed for good, alongside a broader synth performance sweep (validation overhead, performance counter memory). Firehose finally got HTTP Endpoint and Datadog destinations — closing feature requests that date back to 2021. And if you use the Glue alpha module, buckle up: a large API overhaul landed across three releases as the module gets polished for stabilization.
These features are available in aws-cdk-lib v2.264.0 through v2.267.0 and aws-cdk CLI v2.1135.0 through v2.1139.0. Full changelogs on GitHub Releases (Library | CLI).
Major Features
⚠️ Heads-Up Changes
Most of these happen automatically — this is a "know about it" list, not a to-do list. Only the last one (Glue alpha) needs you to actually change code.
-
Bedrock AgentCore metric dimensions corrected (#38486, #38487):
RuntimeBaseandGatewaymetric helpers now emit the CloudWatch dimensions the service actually publishes — per-resource metrics use{ Operation, Name, Resource }(was{ Resource }) and gateway metrics use{ Operation, Protocol, Resource }. Action: If you built alarms or dashboards on the old dimensions, repoint them — the old ones were matching no data anyway. Fresh alarms need nothing. -
Firehose
timeZonevalidated at synth (#38514): specifying an unsupportedtimeZoneon theS3Bucketdestination (3-letter abbreviations likeEST,Etc/UTC,Factory, etc.) now throws aValidationErrorat synth time instead of failing the CloudFormation deployment. Action: None — the same bad value now fails earlier (synth instead of deploy). You only see this if you were already passing an invalidtimeZone; switch it to a standard IANA identifier likeAmerica/New_YorkorUTC. -
s3-deploymentdefault memory raised 128 MB → 1024 MB (#35501): theBucketDeploymentLambda handler frequently OOM'd at the old default, so deployments will now be faster and more reliable out of the box. Action: None required. If you run manyBucketDeploymentconstructs and want to watch per-invocation cost, setmemoryLimit: 128explicitly to keep the old value. -
Glue alpha breaking changes (details below): Action required — if you use
@aws-cdk/aws-glue-alpha, review the API changes before upgrading. This is the one item here with real migration work (most changes are compile-time and mechanical). As always with alpha modules, this kind of churn is expected.
The CLI Now Knows When an AI Agent Is Driving
The most fun feature of the month: a new errors-only progress mode that suppresses the CloudFormation event stream and only prints errors (#1800):
$ cdk deploy --progress errors-only
Why does this matter? Deployment event noise burns tokens and context window when a coding agent is running the CLI. So a follow-up made errors-only the default when the CLI detects it's being run by an AI agent (#1850) — detection recognizes the emerging AI_AGENT environment variable convention plus the specific markers set by Claude Code, Codex, GitHub Copilot CLI, opencode, Crush, Qwen Code, and Cline (#1855).
Humans get the full progress stream they're used to; agents get a quiet, token-efficient interface — no configuration needed on either side. This continues the fast-feedback thread from June's cdk explore and July's Language Server: CDK tooling is increasingly designed for both human and agent workflows.
The addDependency Fix Returns — Plus a Synth Performance Sweep
Remember July's note about the stack.node.addDependency optimization being reverted? The fix is back — properly this time (#38597). Adding dependencies no longer slows down as your stacks grow, which matters a lot for large multi-stack apps.
It landed alongside a broader performance sweep in v2.267.0:
| Improvement | Impact | PR |
|---|---|---|
addDependency no longer degrades with stack size |
Faster synth for large apps | #38597 |
| Performance counters use less memory | June's slow-synth diagnostics no longer bloat memory | #38620 |
| Validation plugin check overhead reduced | July's default validation costs less at synth | #38619 |
Related fixes for the validation rollout also landed: cdk validate no longer hangs indefinitely in some setups (#38510) and no longer drops a plugin's customSeverity label (#1894). The comprehensive validation story from July keeps getting cheaper and more reliable.
Kinesis Data Firehose: HTTP Endpoint and Datadog Destinations
A long-awaited one: the Firehose L2 now supports HTTP Endpoint and Datadog delivery stream destinations (#33657) — closing feature requests open since 2021 (#15502, #20354).
import * as secretsmanager from 'aws-cdk-lib/aws-secretsmanager';
// Datadog destination — API key stored in Secrets Manager
declare const apiKey: secretsmanager.Secret;
const datadogDestination = new firehose.Datadog({
apiKey,
endpoint: firehose.DatadogEndpoint.LOGS_US1,
});
// Or a generic HTTP endpoint destination
declare const endpointConfig: firehose.HttpEndpointConfig;
const httpDestination = new firehose.HttpEndpoint({
endpointConfig,
});
See the aws-kinesisfirehose README for the full destination options.
Contributed by: benjaminpottier
DocumentDB Managed Master Password
Following July's RDS-managed master password, DocumentDB DatabaseCluster gained the same native Secrets Manager integration (#35711) — DocumentDB creates and manages the master-user secret itself, no CDK-owned secret or rotation Lambda needed.
Contributed by: mazyu36
CloudWatch: Alarm Mute Rules and AT_LEAST Composite Alarms
Two notable observability additions:
Alarm Mute Rules
Automatically mute alarm actions during predefined time windows — deployments, maintenance, batch jobs — while CloudWatch keeps monitoring and evaluating alarm states (#37504):
declare const alarm1: cloudwatch.Alarm;
declare const alarm2: cloudwatch.Alarm;
const alarmMuteRule = new cloudwatch.AlarmMuteRule(this, 'AlarmMuteRule', {
alarms: [alarm1],
// Mute period begins at 0:00 every day in UTC
schedule: cloudwatch.ScheduleExpression.cron({ minute: '0', hour: '0' }),
// ... and lasts 1 hour
duration: Duration.hours(1),
});
// Targets can be added after construction
alarmMuteRule.addAlarm(alarm2);
Contributed by: Tietew
AT_LEAST Composite Alarm Expressions
Trigger a composite alarm when at least N (or a percentage) of child alarms fire — no more hand-building boolean expressions (#37693):
declare const alarm1: cloudwatch.Alarm;
declare const alarm2: cloudwatch.Alarm;
declare const alarm3: cloudwatch.Alarm;
new cloudwatch.CompositeAlarm(this, 'AtLeastTwo', {
// At least 2 of these alarms must be in ALARM state
alarmRule: cloudwatch.AlarmRule.atLeast(cloudwatch.AlarmState.ALARM, {
operands: [alarm1, alarm2, alarm3],
threshold: cloudwatch.AtLeastThreshold.count(2),
// or: cloudwatch.AtLeastThreshold.percentage(60)
}),
});
Contributed by: rgoltz
Glue Alpha Module: Big Overhaul Ahead of Stabilization
@aws-cdk/aws-glue-alpha received a sustained API overhaul across all three August alpha releases — one of the PRs literally says "tidy GA-hygiene items" (#38593), so read this as the module being polished for stabilization. Highlights:
-
New
CatalogL2 (#38443) —IDatabase.catalogArn/catalogIdreplaced by a type-safeICatalog -
Security hardening by default — stronger
S3Tableencryption (#38501), KMS key rotation for security configurations (#38512), warnings on plaintext secrets (#38538) and over-broadS3Tablegrants on shared buckets (#38542) -
Databaseremoval policy now defaults toRETAIN(#38535) — stateful resources protected by default -
Typed API surface — encryption configs became factory subtypes like
S3Encryption.kms(key?)(#38586), DQDL wrapped in a typed value object (#38587),workerType/numberOfWorkerspaired into a requiredworkerConfiguration(#38576), schemaTypeis now opaque withSchemafactories - Flex jobs default to Glue 5.0 instead of 3.0 (#38543)
If you're on the Glue alpha module, budget time for the migration — most changes are compile-time and mechanical, and the payoff is a much safer default posture. Alpha modules move fast; this is exactly the churn the alpha label exists for.
CLI Improvements
cdk diff Shows the Target Environment
Stack headers in cdk diff output now include the account/region the diff targets (#1885) — resolving a request open since the early days of the CLI repo (#286). No more guessing which environment a diff applies to in multi-account apps.
Contributed by: badmintoncryer
cdk destroy Warns About Non-Existent Stacks
Destroying a stack that doesn't exist now warns instead of silently succeeding (#984) — a nice complement to July's non-zero exit code for declined prompts.
Contributed by: go-to-k
cdk refactor Hardening
The refactor experience got three reliability fixes: custom toolkit stack names are honored (#1791), stacks with bundled assets no longer fail (#1812), and finalizing a deployment after a refactor no longer intermittently fails while stacks are still UPDATE_IN_PROGRESS (#1805).
Additional CLI Updates
-
--notification-arnsincdk import(#1740) — closes a request from 2022 (aws-cdk#23548) - Change-set diff correctness — diffs no longer miss changes to JSON-typed properties (#1785)
- No more phantom "--no-execute" notices — every change-set deployment incorrectly announced "waiting in review for manual execution" (#1818, go-to-k)
-
Fail fast on bad
--proxyvalues (#1843) -
Hotswap fixes — nested-stack outputs joining
List<>parameters no longer throw (#1842); empty-string Lambda descriptions no longer silently dropped (#1831) -
Real errors surfaced — a failed new-stack deployment no longer masks the root cause behind a
NoStackerror (#1845) -
cdk gcaccuracy — ECR tagging permission errors now fail loudly instead of silently skipping (#1828); progress output no longer showsNaN%(#1873) -
Better Stage guidance — the stack-selection error now points
Stageusers to a working pattern (#1847) - integ-runner resilience — detects bootstrap errors and retries tests in valid regions (#1898)
Service Enhancements
EC2 & Networking
- EBS gp3/io2 volumes up to 64 TiB (#37049) — validation caught up with service limits
- EBS volume initialization rate on launch templates (#36451) — control how fast snapshots hydrate
-
GatewayVpcEndpointgainedipAddressTypeanddnsRecordIpType(#37900) — IPv6-ready endpoints - IPv6 default route now depends on the VPC gateway attachment (#37893) — fixes a race at deploy time
-
NAT instance providers no longer trigger a spurious
keyNamedeprecation warning (#38347, yasomaru)
Serverless & Data
- Lambda SnapStart for container image functions re-landed (#38680) — the July revert is resolved
-
DynamoDB
TableV2grant fixes —grants.*Datanow includes index resources (#37892, vishwakt); imported tables with tokenized ARNs accepted in multi-account replicas (#38365); no more spurious deprecation warnings (#38399, deveshsinghal09) - RDS serverless V2 capacity props accept tokens (#38044, yasomaru) — closes a family of long-standing issues
-
SQS
metricApproximateNumberOfMessagesOutstanding(#38661) -
Backup
indexActionsonBackupPlanRule(#34051, georeeve) — enable backup index for search/restore
Everything Else
- SNS→SQS subscriptions in opt-in regions use the regionalized service principal (#38339) — fixes a 2024-era issue
-
Step Functions:
CallApiGatewayRestApiEndpointsupports JSONata forapiPath(#37738, NaveenKumar-Marupalli) -
CloudFront: warns when
minimumProtocolVersionis set without a certificate (#37250); originreadTimeout/keepaliveTimeoutno longer reject valid values (#38432) -
Bedrock AgentCore: Memory L2
StreamDeliveryResources(#37527), opt-out for runtime observability resource policies (#38372, sanyamk23), least-privilege browser-recording S3 grants (#38604) -
Assets/bundling fixes:
SymlinkFollowMode.BLOCK_EXTERNALno longer throws during bundling (#38506), single-file bundled output stays a file (#38548), symlinks in directory bundling output handled (#38665) - Secrets Manager: corrected SAR rotation application versions for GovCloud (#38462)
-
MediaConnect alpha keeps maturing:
addOutputoptions and simpler VPC interface referencing (#38515), underscore-friendly name validation (#38539), plus a MediaPackageV2GetChannelgrant fix (#38582) — all jamiepmullan -
Security:
brace-expansionbumped to 5.0.9 for CVE-2026-69152 (#38520, jumic) Core:
Sizeobjects now stringify properly (#38662);stack.availabilityZonesreturns stable strings (#38580)EKS v2 reaches Provisioned Control Plane parity: the EKS v2
Clusternow supportscontrolPlaneScalingTier, matching the stable EKS construct introduced in July (#36863). Named tiers run fromSTANDARDthroughTIER_8XL, andControlPlaneScalingTier.of(...)provides an escape hatch for future tiers. Contributed by: notSoWiseOldMan
Community Highlights
Contributors
lemon0333 — Added --notification-arns support to cdk import (#1740) and shipped a run of CLI hardening fixes covering proxy validation (#1843), acknowledge IDs (#1844), Stage guidance (#1847), and cdk gc progress (#1873).
notSoWiseOldMan — Brought Provisioned Control Plane scaling to the EKS v2 Cluster (#36863), closing the parity gap with the stable EKS construct.
go-to-k — Four CLI improvements this month: cdk destroy warnings for non-existent stacks (#984), the phantom --no-execute notice fix (#1818), the cdk context header fix (#1816), and refactor support for bundled assets (#1812).
badmintoncryer (distinguished-contributor, AWS Community Builder) — Target environments in cdk diff stack headers (#1885), resolving one of the oldest open requests in the CLI repo.
yasomaru (AWS Community Builder) — RDS serverless V2 tokenized capacity (#38044) and the NAT instance keyName warning fix (#38347). Four consecutive monthly updates and counting.
mazyu36 — DocumentDB managed master password (#35711), extending July's RDS pattern to another engine.
benjaminpottier — Firehose HTTP Endpoint and Datadog destinations (#33657), closing feature requests from 2021.
Tietew (distinguished-contributor) — CloudWatch alarm mute rules (#37504).
rgoltz — AT_LEAST composite alarm expressions (#37693), his second month in a row.
jamiepmullan (valued-contributor) — Continued MediaConnect/MediaPackage polish (#38515, #38539, #38582) following July's module launch.
vishwakt — Two DynamoDB TableV2 fixes (#37892, #38365).
jumic (distinguished-contributor, AWS Community Builder) — Another CVE remediation (#38520).
Zelys-DFKH — IPv6-ready GatewayVpcEndpoint props (#37900) and the IPv6 default-route race fix (#37893).
georeeve — Backup indexActions (#34051).
dalatrex — EBS volume initialization rate for launch templates (#36451).
ychjamie — The s3-deployment memory default fix (#35501).
aayushostwal — EBS 64 TiB validation update (#37049).
NaveenKumar-Marupalli — JSONata support in the API Gateway Step Functions task (#37738).
deveshsinghal09 — DynamoDB deprecation-warning cleanup (#38399).
sanyamk23 — AgentCore observability policy opt-out (#38372).
peter-smith-phd — Fixed bucket URLs for local S3 emulators (#1625) — LocalStack users rejoice.
sjh9714 — Glue struct type strings no longer include comments (#38008), fixing an issue from 2023.
Adityaj0 — Fixed cdk flags --set leaking synthesized cloud assembly directories (#1833).
Community Content & Resources
From the Community:
Your monorepo remembers infrastructure you deleted — Siddharth Pandey explains how stale templates survive in cdk.out, why recursively scanning every template can invent resources and exports that no longer exist, and how using the Cloud Assembly manifest as the source of truth fixes the problem.
AWS CDK 100 Drill Exercises #012: S3 Static Web Site — TOMOAKI Ishihara (AWS Community Builder) examines an intentionally minimal S3 website, including how an aws:SourceIp condition interacts with Block Public Access and why the S3 website endpoint cannot use HTTPS.
AWS CDK 100 Drill Exercises #013: CloudFront S3 Static Website — The follow-up evolves that site into a private S3 origin behind CloudFront OAC, with security headers, SPA-aware error handling, and a cross-region WAF stack in us-east-1.
Resources:
- AWS IaC MCP Server — AI-powered CDK development via Model Context Protocol.
- CDK Construct Hub — Discover community-built constructs.
- AWS CDK API Reference
How Can You Be Involved
Report Issues
Open an issue on GitHub.
Contribute Code
Check our contributing guide and look for good first issue or help wanted labels.
Join the Conversation
- Slack: CDK.dev community
- GitHub: Discussions
-
Stack Overflow:
aws-cdktag
Star the Repo
Give us a star on GitHub! ⭐
Feedback? Share in GitHub Discussions.
Top comments (0)