@@ -14,7 +14,8 @@ export const bedrockDefaultPromptRouterModelId: BedrockModelId = "anthropic.clau
1414// feature.
1515export const bedrockModels = {
1616 "anthropic.claude-sonnet-4-5-20250929-v1:0" : {
17- maxTokens : 8192 ,
17+ // Mirrors anthropic-direct cap; AWS Bedrock accepts the same upstream maximum.
18+ maxTokens : 64_000 ,
1819 contextWindow : 200_000 ,
1920 supportsImages : true ,
2021 supportsPromptCache : true ,
@@ -28,7 +29,8 @@ export const bedrockModels = {
2829 cachableFields : [ "system" , "messages" , "tools" ] ,
2930 } ,
3031 "anthropic.claude-sonnet-4-6" : {
31- maxTokens : 8192 ,
32+ // Mirrors anthropic-direct cap; AWS Bedrock accepts the same upstream maximum.
33+ maxTokens : 64_000 ,
3234 contextWindow : 200_000 , // Default 200K, extendable to 1M with beta flag 'context-1m-2025-08-07'
3335 supportsImages : true ,
3436 supportsPromptCache : true ,
@@ -116,7 +118,8 @@ export const bedrockModels = {
116118 cachableFields : [ "system" ] ,
117119 } ,
118120 "anthropic.claude-sonnet-4-20250514-v1:0" : {
119- maxTokens : 8192 ,
121+ // Mirrors anthropic-direct cap; AWS Bedrock accepts the same upstream maximum.
122+ maxTokens : 64_000 ,
120123 contextWindow : 200_000 ,
121124 supportsImages : true ,
122125 supportsPromptCache : true ,
@@ -130,7 +133,8 @@ export const bedrockModels = {
130133 cachableFields : [ "system" , "messages" , "tools" ] ,
131134 } ,
132135 "anthropic.claude-opus-4-1-20250805-v1:0" : {
133- maxTokens : 8192 ,
136+ // Mirrors anthropic-direct cap; AWS Bedrock accepts the same upstream maximum.
137+ maxTokens : 32_000 ,
134138 contextWindow : 200_000 ,
135139 supportsImages : true ,
136140 supportsPromptCache : true ,
@@ -144,7 +148,8 @@ export const bedrockModels = {
144148 cachableFields : [ "system" , "messages" , "tools" ] ,
145149 } ,
146150 "anthropic.claude-opus-4-6-v1" : {
147- maxTokens : 8192 ,
151+ // Mirrors anthropic-direct cap; AWS Bedrock accepts the same upstream maximum.
152+ maxTokens : 128_000 ,
148153 contextWindow : 200_000 , // Default 200K, extendable to 1M with beta flag 'context-1m-2025-08-07'
149154 supportsImages : true ,
150155 supportsPromptCache : true ,
@@ -168,7 +173,11 @@ export const bedrockModels = {
168173 ] ,
169174 } ,
170175 "anthropic.claude-opus-4-7" : {
171- maxTokens : 8192 ,
176+ // Opus 4.7 ships with a 128K-token max output on Bedrock
177+ // (https://builder.aws.com/content/3Cl90CMMnqzCrkk6mXcmnGo1WTG/claude-opus-47-on-amazon-bedrock-apis-features-and-migration-guide).
178+ // We default to that ceiling here so the reasoning-budget slider isn't artificially
179+ // clamped to the legacy 8K floor used by older Anthropic-on-Bedrock entries.
180+ maxTokens : 128_000 ,
172181 // Opus 4.7 natively supports 1M context (no beta flag required) with FLAT $5/$25
173182 // pricing at any context length. We still keep a tier entry so the dropdown can
174183 // show a "128K" vs "1M" choice - the tier just toggles the context window the UI
@@ -198,7 +207,8 @@ export const bedrockModels = {
198207 ] ,
199208 } ,
200209 "anthropic.claude-opus-4-5-20251101-v1:0" : {
201- maxTokens : 8192 ,
210+ // Mirrors anthropic-direct cap; AWS Bedrock accepts the same upstream maximum.
211+ maxTokens : 32_000 ,
202212 contextWindow : 200_000 ,
203213 supportsImages : true ,
204214 supportsPromptCache : true ,
@@ -266,7 +276,8 @@ export const bedrockModels = {
266276 cachableFields : [ "system" , "messages" , "tools" ] ,
267277 } ,
268278 "anthropic.claude-haiku-4-5-20251001-v1:0" : {
269- maxTokens : 8192 ,
279+ // Mirrors anthropic-direct cap; AWS Bedrock accepts the same upstream maximum.
280+ maxTokens : 64_000 ,
270281 contextWindow : 200_000 ,
271282 supportsImages : true ,
272283 supportsPromptCache : true ,
@@ -870,12 +881,18 @@ export const resolveBedrockModelInfo = ({
870881 optIn1MContext,
871882 modelMaxTokens,
872883 contextWindowOverride,
884+ maxOutputTokensOverride,
873885} : {
874886 baseModelId ?: string
875887 targetId ?: string
876888 optIn1MContext ?: boolean
889+ // Request-time "how many tokens to ask for" knob (slider value). Mirrors the historic behaviour.
877890 modelMaxTokens ?: number
878891 contextWindowOverride ?: number
892+ // Static cap override (e.g. empirically detected by the AWS probe). When set, this widens the
893+ // effective `info.maxTokens` ceiling that downstream UI and request builders see, even if the
894+ // user has not explicitly bumped the slider.
895+ maxOutputTokensOverride ?: number
879896} ) : { baseModelId : string ; info : ModelInfo ; uses1MContext : boolean ; contextSource : BedrockContextSource } => {
880897 const resolvedBaseModelId = parseBedrockBaseModelId ( baseModelId || targetId || bedrockDefaultModelId )
881898
@@ -906,6 +923,12 @@ export const resolveBedrockModelInfo = ({
906923 }
907924 }
908925
926+ // Apply the static-cap override BEFORE the request-time `modelMaxTokens` so users can
927+ // explicitly request fewer tokens than the model's headroom (e.g. cost control) without
928+ // having the override silently clobber their slider value.
929+ if ( maxOutputTokensOverride && maxOutputTokensOverride > 0 ) {
930+ info . maxTokens = maxOutputTokensOverride
931+ }
909932 if ( modelMaxTokens && modelMaxTokens > 0 ) {
910933 info . maxTokens = modelMaxTokens
911934 }
0 commit comments