v vanemmerik.ai / aws-ai
AWS AI Daily 2026 ยท 06 ยท 15 โ‰ˆ 7 min read Amazon Bedrock AgentCore ยท Runtime

Runtime versioning.

You shipped an agent. Now you want a staging copy on last week's build, a production copy you only move on purpose, and a DEFAULT that always tracks the newest code. AgentCore Runtime gives you all three without a deployment system of your own: every change to a runtime mints a new immutable version, and endpoints are the named pointers that decide which version actually serves traffic. Understand the version/endpoint split and blue-green for agents is two API calls.

โ€บ update_agent_runtime_endpoint(endpointName="production", agentRuntimeVersion="2")

01Automatic, immutable versioning

You never call a "publish version" API by hand. AgentCore versions a runtime for you:

That last point is the one that matters operationally: a version isn't a delta against the previous one, it's a full snapshot. Roll an endpoint back to V2 and you get exactly the container image, protocol, and network settings V2 had โ€” nothing leaks forward from V3.

Key insight

Versions and endpoints are two independent axes. A version is an immutable snapshot of config; an endpoint is a movable, named pointer at one version. You promote and roll back by moving the pointer โ€” never by editing the snapshot.

02Endpoints point at versions

A version is inert until an endpoint references it. Endpoints are the addressable, named pointers you actually invoke:

In CloudFormation the endpoint is AWS::BedrockAgentCore::RuntimeEndpoint, and its shape tells the whole story: a Name, the AgentRuntimeId it belongs to, and an optional AgentRuntimeVersion it pins. Leave the version off and it tracks the latest; set it and you've nailed the endpoint to one snapshot. The endpoint name is short by design โ€” up to 48 characters, ^[a-zA-Z][a-zA-Z0-9_]{0,47}$ โ€” because it's the human-readable handle you'll pass at invoke time.

03DEFAULT vs named endpoints โ€” the blue-green lever

This is the whole feature in one idea. DEFAULT is your "always newest" channel: every agentcore deploy (or UpdateAgentRuntime) bumps the version and DEFAULT follows instantly, which is perfect for a dev loop and dangerous for production. A named endpoint pinned to a version is your stable channel: it does not move when you push new code. It moves only when you call UpdateAgentRuntimeEndpoint with a new agentRuntimeVersion.

So the safe promotion pattern is: push code freely (DEFAULT and your dev clients see it immediately), test against DEFAULT, and when you're satisfied, point production at that version with one explicit call. Roll back the same way โ€” re-point production at the previous integer. Because versions are immutable snapshots, the rollback target is byte-for-byte what it was.

04The versioning scenario table

The docs spell out exactly when a new version is born and how endpoints react. Note that a new endpoint never creates a version โ€” endpoints and versions are independent axes:

ChangeVersion behaviorLatestEndpoint behavior
Initial creationCreates V1V1DEFAULT โ†’ V1
Protocol changeNew versionV2DEFAULT auto-updates to V2
Create PROD on V2No new versionV2PROD โ†’ V2
Container image updateNew versionV3DEFAULT โ†’ V3, PROD stays on V2
Update PROD to V3No new versionV3PROD โ†’ V3
Network settings changeNew versionV4DEFAULT โ†’ V4, PROD stays on V3

The takeaway: protocol changes, container image updates, and network/security setting changes each cut a new version; creating or re-pointing an endpoint does not. DEFAULT always chases the latest version automatically; PROD sits still until you move it.

05Endpoint lifecycle states

An endpoint is itself a managed resource with its own state machine, so a deploy or promotion can be observed (and can fail) independently of the runtime:

In CloudFormation the endpoint surfaces matching attributes you can read with Fn::GetAtt: Status, LiveVersion (the version currently deployed and serving), TargetVersion (the version it's trying to reach), and FailureReason. The LiveVersion/TargetVersion pair is what makes an in-flight promotion legible โ€” during an UPDATING window they differ, and a failed update leaves LiveVersion where it was so traffic keeps flowing on the last good snapshot.

06Selecting an endpoint at invoke time

You choose the channel per call. InvokeAgentRuntime takes an optional qualifier โ€” "an endpoint name that points to a specific version. If not specified, Amazon Bedrock AgentCore uses the default endpoint of the agent runtime." So an unqualified invoke hits DEFAULT; passing qualifier="production" routes the same request to whatever version your production endpoint is pinned to.

import boto3

client = boto3.client("bedrock-agentcore")
resp = client.invoke_agent_runtime(
    agentRuntimeArn=agent_arn,
    runtimeSessionId=session_id,      # 33โ€“256 chars
    qualifier="production",           # omit this to hit DEFAULT
    payload=payload)

To see what's out there, ListAgentRuntimeVersions enumerates every immutable version of a runtime and ListAgentRuntimeEndpoints lists the endpoints (and, via the live/target fields, which version each is serving). That pairing โ€” versions on one axis, endpoints on the other โ€” is the entire mental model.

07Limits worth knowing

08Try it in five minutes

Stand up two channels off one runtime and watch them diverge. DEFAULT already tracks the latest version; you add a stable production endpoint and promote it on your own schedule:

# 1. You already have a runtime; DEFAULT tracks its latest version.
#    Create a stable PROD endpoint pinned to version 1.
aws bedrock-agentcore-control create-agent-runtime-endpoint \
    --agent-runtime-id agent-runtime-12345 \
    --name production \
    --agent-runtime-version 1

# 2. Push a change (new container image) -> a new version, say V2, is minted.
#    DEFAULT now serves V2; production is still on V1.
aws bedrock-agentcore-control list-agent-runtime-versions \
    --agent-runtime-id agent-runtime-12345

# 3. Promote production to V2 โ€” explicitly, when you're ready.
aws bedrock-agentcore-control update-agent-runtime-endpoint \
    --agent-runtime-id agent-runtime-12345 \
    --endpoint-name production \
    --agent-runtime-version 2

Invoke with no qualifier to hit DEFAULT (latest), then invoke again with --qualifier production and confirm the two channels can be on different versions at the same time. That gap โ€” DEFAULT racing ahead while production holds โ€” is exactly the safety margin versioning buys you.

โœ“Verified against the official AWS docs on 2026-06-15.
Sources: AgentCore Runtime versioning and endpoints, Invoke an AgentCore Runtime agent, InvokeAgentRuntime API Reference, AWS::BedrockAgentCore::RuntimeEndpoint (CloudFormation).
If the docs change, this tip is a snapshot of that day โ€” check the sources for current behaviour.
Heads up โ€” this tip is from 2026-06-15. AWS services move fast โ€” check the AgentCore Runtime versioning guide before relying on specifics, then come back for today's tip โ†’
C

This page โ€” research, writing, verification, and deployment โ€” was built by Claude Cowork. No human touched the prose, the layout, or the upload pipeline. The tip was generated this morning, cross-checked against the official AWS docs by an independent verification pass, and published to Cloudflare R2 on a schedule.

A daily experiment by Monty van Emmerik ยท vanemmerik.ai ยท what is Claude Cowork?