Child 6 of 6 — parent #741. Behavior change. Depends on #746 being deployed first.
Flips the geo from us to global. One context value + three default strings; revert is a one-line context change.
Blocked by
Verified prerequisites (us-east-1, acct 677276119483)
| Profile |
Status |
InvokeModel |
global.anthropic.claude-opus-5 |
ACTIVE |
✅ 200 |
global.anthropic.claude-haiku-4-5-20251001-v1:0 |
ACTIVE |
✅ 200 |
SDK path verified end-to-end with the pinned toolchain (claude-agent-sdk==0.2.110, bundled CLI 2.1.191): agent/scripts/diagnostics/test_sdk_smoke.py with ANTHROPIC_MODEL=global.anthropic.claude-opus-5 and ANTHROPIC_DEFAULT_HAIKU_MODEL=global.anthropic.claude-haiku-4-5-20251001-v1:0 returned status=success turns=1 in 3.6s. No SDK/CLI bump required.
Why global
global. routes to any supported commercial AWS Region, giving higher throughput and better resilience under peak demand than a US-only profile. That matters for a workload whose tasks run up to 8h and burst.
The tradeoff is data residency. A deployer with a residency requirement must keep a geo profile (us./eu./apac.) instead — which is why #746 made this a context key rather than a second hardcode. Document the tradeoff in the canonical section from #742: when to prefer global. (throughput/resilience) vs a geo profile (residency), and that the geo choice must match the deployment Region's entitlements.
There is prior art in-repo: .threat-composer/20260526-1924/config/config.json pins global.anthropic.claude-opus-4-6-v1.
Scope
| File |
Change |
cdk/cdk.json |
add context: { "bedrockGeoRegion": "global" } — the file currently has no context block |
agent/src/config.py:563 |
ANTHROPIC_MODEL fallback → global.anthropic.claude-opus-5 |
agent/src/models.py:157 |
anthropic_model default → same |
cli/src/repo-display.ts:48 |
PLATFORM_REPO_DEFAULTS.model_id → same |
cdk/src/handlers/shared/workflows.ts:84 |
add global.anthropic.claude-opus-5 to WORKFLOW_MODEL_ALLOWLIST (#744 deliberately held this back) |
| docs |
geo tradeoff subsection + documented default (#742 drift test will enforce) |
ANTHROPIC_DEFAULT_HAIKU_MODEL needs no edit — #746 derives its prefix from the context key.
The generalized drift guard from #746 accepts the global. prefix; if it fails here, #746 is incomplete and this issue is blocked rather than the guard being wrong.
Rollback
Set bedrockGeoRegion back to us in cdk.json and redeploy; revert the three default strings. Because #746 keeps both geos' plumbing valid, rollback needs no code restructuring. The us. profile ARNs remain granted only if bedrockGeoRegion is us — so roll back context and defaults together, not independently.
Acceptance criteria
Notes
Blocked by #746. Final step in the #740/#741 stack.
Child 6 of 6 — parent #741. Behavior change. Depends on #746 being deployed first.
Flips the geo from
ustoglobal. One context value + three default strings; revert is a one-line context change.Blocked by
bedrockGeoRegionplumbing must be deployed first, or the IAM grant won't coverinference-profile/global.anthropic.…and every task fails at turn 0 withAccessDenied.us.profile and this change isolates the geo variable.Verified prerequisites (us-east-1, acct 677276119483)
InvokeModelglobal.anthropic.claude-opus-5global.anthropic.claude-haiku-4-5-20251001-v1:0SDK path verified end-to-end with the pinned toolchain (
claude-agent-sdk==0.2.110, bundled CLI2.1.191):agent/scripts/diagnostics/test_sdk_smoke.pywithANTHROPIC_MODEL=global.anthropic.claude-opus-5andANTHROPIC_DEFAULT_HAIKU_MODEL=global.anthropic.claude-haiku-4-5-20251001-v1:0returnedstatus=success turns=1in 3.6s. No SDK/CLI bump required.Why global
global.routes to any supported commercial AWS Region, giving higher throughput and better resilience under peak demand than a US-only profile. That matters for a workload whose tasks run up to 8h and burst.The tradeoff is data residency. A deployer with a residency requirement must keep a geo profile (
us./eu./apac.) instead — which is why #746 made this a context key rather than a second hardcode. Document the tradeoff in the canonical section from #742: when to preferglobal.(throughput/resilience) vs a geo profile (residency), and that the geo choice must match the deployment Region's entitlements.There is prior art in-repo:
.threat-composer/20260526-1924/config/config.jsonpinsglobal.anthropic.claude-opus-4-6-v1.Scope
cdk/cdk.jsoncontext: { "bedrockGeoRegion": "global" }— the file currently has nocontextblockagent/src/config.py:563ANTHROPIC_MODELfallback →global.anthropic.claude-opus-5agent/src/models.py:157anthropic_modeldefault → samecli/src/repo-display.ts:48PLATFORM_REPO_DEFAULTS.model_id→ samecdk/src/handlers/shared/workflows.ts:84global.anthropic.claude-opus-5toWORKFLOW_MODEL_ALLOWLIST(#744 deliberately held this back)ANTHROPIC_DEFAULT_HAIKU_MODELneeds no edit — #746 derives its prefix from the context key.The generalized drift guard from #746 accepts the
global.prefix; if it fails here, #746 is incomplete and this issue is blocked rather than the guard being wrong.Rollback
Set
bedrockGeoRegionback tousincdk.jsonand redeploy; revert the three default strings. Because #746 keeps both geos' plumbing valid, rollback needs no code restructuring. Theus.profile ARNs remain granted only ifbedrockGeoRegionisus— so roll back context and defaults together, not independently.Acceptance criteria
cdk.jsonsetsbedrockGeoRegion: "global"global.anthropic.claude-opus-5in one commitglobal.anthropic.claude-opus-5added toWORKFLOW_MODEL_ALLOWLISTcdk diffreviewed: inference-profile ARNs changeus.→global.; foundation-model ARNs unchanged (alreadyregion: '*')agentcore: one task completes end-to-end and opens a PRlambda-microvmverification is out of scope — CI deploysagentcoreonly (ALLOWED_COMPUTE_TYPES: "agentcore"in.github/workflows/build.yml+deploy.yml). ECS unit-test coverage still applies and must passplatform doctorpasses its access probe against the global profilemise //docs:syncrun-c bedrockGeoRegion=ussynths cleanly withus.ARNsmise run buildgreenNotes
Blocked by #746. Final step in the #740/#741 stack.