Bedrock coding models: Kimi K3, Fable 5.1, Opus 5.5 and Sonnet 5.5¶
These opt-in examples extend existing model routing; they do not introduce a second Responses ingress or replace the main branch's policy/identity pipeline. Merge the provider, model, allowed-model and price entries into your configuration. Do not replace a running production configuration with an example.
| Example | Public model | Upstream profile | API | Context |
|---|---|---|---|---|
| Kimi K3 | kimi-k3 |
global.moonshotai.kimi-k3 |
Converse | 1,000,000 |
| Fable 5.1 | global.anthropic.claude-fable-5-1 |
Same as public ID | InvokeModel | 1,000,000 |
| Opus 5.5 | global.anthropic.claude-opus-5-5 |
Same as public ID | InvokeModel | 1,000,000 |
| Sonnet 5.5 | global.anthropic.claude-sonnet-5-5 |
Same as public ID | InvokeModel | 1,000,000 |
All examples use Seoul as source region, declare tools, and block missing
pricing. Global profiles may process outside Korea; an endpoint region is not
data residency. The SDK default credential chain can use the EC2 instance role;
no sample-account profile or extra AssumeRole is required. Remove unintended
credential/profile overrides if the instance role is the intended identity.
Pricing and capability boundaries¶
Standard Global USD per million tokens, checked 2026-09-20 (Opus 5.5: 2026-09-23; Sonnet 5.5: 2026-10-18):
| Model | Input | Output | Cache read | Cache write |
|---|---|---|---|---|
| Kimi K3 | 3 | 15 | 0.30 | 3.75 |
| Fable 5.1 | 10 | 50 | 0.25 | 12.50 (5m), 20 (1h) |
| Opus 5.5 | 4 | 20 | 0.20 | 5 (5m), 8 (1h) |
| Sonnet 5.5 | 2 | 10 | 0.10 | 2.50 (5m), 4 (1h) |
Prices are keyed to the exact global profile; US CRIS must have its own prices. K3 untiered cache writes use the legacy 5m accounting bucket, not a claim of a 5m TTL. Its example sets both write buckets to the published rate. Converse does not implement K3's explicit Chat/Responses cache controls in this adapter.
The 1M windows are documented model capacities, not million-token load-test results. Fable's published maximum output is 128K; do not confuse that with a client/gateway output budget. The installed launchers may use smaller output or compaction budgets. K3's model card does not specify a maximum output count.
Fable 5.1 uses always-on adaptive thinking. Omit unsupported sampling parameters;
the existing Fable legacy-thinking adapter also matches fable-5-1. AWS requires
aws_review retention opt-in; these examples do not change that account setting.
Obtain explicit organizational approval before enabling AWS review. Refusals are
HTTP 200 with a refusal stop reason, not successful execution of a requested task.
Opus 5.5 cache reads are 0.05x input, so its example declares every cache rate
instead of relying on the derived 0.1x default. Thinking cannot be disabled:
thinking.type: disabled and enabled with budget_tokens both return 400. The
legacy-thinking adapter matches opus-5 (Opus 5 and 5.5) and rewrites only the
budget_tokens form; disabled passes through and fails. Default effort is
medium, one level below Opus 5. Forced tool_choice (any/tool) returns 400,
so an OpenAI or Responses client sending tool_choice: required is rejected
upstream; the gateway does not weaken it to auto. The published
client measurements record Codex text/tool smoke
successes for Opus 5.5 using the campaign build's stateless Responses bridge,
and failed Claude Code trials. Those bounded tests do
not qualify all clients, long sessions or model quality.
Sonnet 5.5 has the same prices as Sonnet 5 except cache reads, which cost 0.05x
input, as for Opus 5.5; its example declares every rate. Seoul offers only the
global. profile; us-east-1 also offers us.anthropic.claude-sonnet-5-5, which
needs its own prices (checked 2026-10-18). Adaptive thinking is on by default
with effort high. thinking.type: disabled returns 400; send between_tools
(effort high or below) to turn off up-front thinking. The legacy-thinking
adapter's sonnet-5 pattern also matches Sonnet 5.5 and rewrites only the
budget_tokens form; disabled passes through and fails. Forced tool_choice
(any/tool) returns 400, as for Opus 5.5. Its thinking blocks are bound to
the model and conversation: other models drop them, and replaying one after
editing earlier history can return 400. The published
client measurements record Codex text/tool smoke
successes for Sonnet 5.5 using the campaign build's stateless Responses bridge,
and failed Claude Code trials. Long-input failures and
timeouts are recorded separately; these results do not qualify all clients.
Client setup and acceptance status¶
Use the main branch's client setup and Codex launcher. All client requests must go through mayu; AWS credentials stay on the data plane. Claude Code can use the native Bedrock mode pointed at mayu's Bedrock ingress rather than the AWS endpoint. Changing client mode does not itself prove compatibility.
Recorded local acceptance on 2026-09-20 used a deployed-source build plus the foreign-thinking output hotfix. These are bounded file-read tool round trips, not qualification of all plugins, arbitrary tools or long coding sessions:
| Client | Fable 5 | Fable 5.1 | Kimi K3 |
|---|---|---|---|
| OpenCode, Responses launcher | Passed | Passed | Passed |
| Codex, Responses launcher | Passed | Passed | Passed |
| Claude Code, Anthropic Messages mode | Passed after retries | Failed | Not run after prior failure |
Claude Code's Fable 5.1 request failed with Bedrock
messages.1.output_config: Extra inputs are not permitted; fallback to Fable 5
also failed on that field. Fable 5 initially encountered a safeguards rejection.
Native Bedrock-mode retesting remains pending. Do not strip safety-related fields
blindly or claim that all three clients are fully verified.
A later long Codex/Fable 5.1 session repeatedly exhausted the bridge's 4096-token output budget with no visible progress. Handling empty/incomplete responses, reasoning/output budgets and bounded retry behavior remains open. The thinking hotfix prevents unsupported-block errors; it does not resolve this later issue.