NousResearch/hermes-agent
MiniMax Anthropic transport and prompt caching fixes
Cluster 17332 · agent. Data as of
1 open item. Fix merged in #17425 on 29 Apr 2026. Check it covers your case.
The short answer
0open issues
1open PR
5items grouped
- Known?
- Yes. 5 related items grouped here, 1 issue already closed.
- Fix event
- A fix was merged to main in PR #17425. Check it covers your case. No release data is tracked.
- Tracker
- The maintainers' tracker marks this
resolved, deciding PR #17425. That is separate from the fix event. - Still open
- 0 issues and 1 PR.
These issues and pull requests address bugs in MiniMax's integration with the Anthropic messages transport, specifically around enabling prompt caching for MiniMax's own models and correcting provider defaults and capability registry entries.
Open issues0
Open PRs1
- PR#18147fix(agent): default MiniMax provider to anthropic_messages + correct base_url
Fixes on record
-
#17425 fix(minimax): enable Anthropic prompt caching for MiniMax's own models
files:
run_agent.py,tests/run_agent/test_anthropic_prompt_cache_policy.pyShow the diff
-
run_agent.py@@ -2814,6 +2814,24 @@ def _anthropic_prompt_cache_policy( # Third-party Anthropic-compatible gateway. return True, True + # MiniMax on its Anthropic-compatible endpoint serves its own + # model family (MiniMax-M2.7, M2.5, M2.1, M2) with documented + # cache_control support (0.1× read pricing, 5-minute TTL). The + # blanket is_claude gate above excludes these — opt them in + # explicitly via provider id or host match so users on + # provider=minimax / minimax-cn (or custom endpoints pointing at + # api.minimax.io/anthropic / api.minimaxi.com/anthropic) get the + # same cost reduction as Claude traffic. + # Docs: https://platform.minimax.io/docs/api-reference/anthropic-api-compatible-cache + if is_anthropic_wire: + is_minimax_provider = provider_lower in {"minimax", "minimax-cn"} + is_minimax_host = ( + base_url_host_matches(eff_base_url, "api.minimax.io") + or base_url_host_matches(eff_base_url, "api.minimaxi.com") + ) + if is_minimax_provider or is_minimax_host: + return True, True + # Qwen/Alibaba on OpenCode (Zen/Go) and native DashScope: OpenAI-wire # transport that accepts Anthropic-style cache_control markers and # rewards them with real cache hits. Without this branch -
tests/run_agent/test_anthropic_prompt_cache_policy.py@@ -89,15 +89,75 @@ def test_minimax_claude_via_anthropic_messages(self): assert should is True, "Third-party Anthropic gateway with Claude must cache" assert native is True, "Third-party Anthropic gateway uses native cache_control layout" - def test_third_party_without_claude_name_does_not_cache(self): - # A provider exposing e.g. GLM via anthropic_messages transport — we - # don't know whether it supports cache_control, so stay conservative. + def test_third_party_anthropic_non_claude_unknown_provider_does_not_cache(self): + # A provider exposing e.g. GLM via anthropic_messages transport from + # a host we don't recognize — we don't know whether it supports + # cache_control, so stay conservative. + agent = _make_agent( + provider="custom", + base_url="https://some-unknown-gateway.example.com/anthropic", + api_mode="anthropic_messages", + model="glm-4.5", + ) + assert agent._anthropic_prompt_cache_policy() == (False, False) + + +class TestMiniMaxAnthropicWire: + """MiniMax's own model family on its Anthropic-compatible endpoint. + + MiniMax documents cache_control support on ``/anthropic`` (0.1× read + pricing, 5-minute TTL). Issue #17332: the blanket ``is_claude`` gate on + the third-party-gateway branch left MiniMax-M2.7 etc. paying full input + cost every turn. Allowlist MiniMax explicitly via provider id or host. + """ + + def test_minimax_m27_on_provider_minimax_caches_native_layout(self): + agent = _make_agent( + provider="minimax", + base_url="https://api.minimax.io/anthropic", + api_mode="anthropic_messages", + model="minimax-m2.7", + ) + assert agent._anthropic_prompt_cache_policy() == (True, True) + + def test_minimax_m25_on_provider_minimax_cn_caches_native_layout(self): + agent = _make_agent( + provider="minimax-cn", + base_url="https://api.minimaxi.com/anthropic", + api_mode="anthropic_messages", + model="minimax-m2.5", + ) + assert agent._anthropic_prompt_cache_policy() == (True, True) + + def test_custom_provider_pointed_at_minimax_host_caches(self): + # User wires a custom provider manually at MiniMax's Anthropic URL; + # host match alone should be sufficient to enable caching. agent = _make_agent( provider="custom", base_url="https://api.minimax.io/anthropic", api_mode="anthropic_messages", model="minimax-m2.7", ) + assert agent._anthropic_prompt_cache_policy() == (True, True) + + def test_minimax_host_china_endpoint_caches(self): + agent = _make_agent( + provider="custom", + base_url="https://api.minimaxi.com/anthropic", + api_mode="anthropic_messages", + model="minimax-m2.1", + ) + assert agent._anthropic_prompt_cache_policy() == (True, True) + + def test_minimax_provider_on_openai_wire_does_not_cache(self): + # chat_completions transport — MiniMax's cache_control support is + # documented only for the /anthropic endpoint. Stay off. + agent = _make_agent( + provider="minimax", + base_url="https://api.minimax.io/v1", + api_mode="chat_completions", + model="minimax-m2.7", + ) assert agent._anthropic_prompt_cache_policy() == (False, False)
-
2 PRs closed without merging
From the close comments: done elsewhere 1 · other 1
Closed issues · 1
- Closed#17332[Bug]: Prompt caching silently disabled for MiniMax's own models (MiniMax-M2.7 etc.) on anthropic_messages transport
How this cluster was grouped
-
Link evidence (
structural links throughout): every member is connected by structural evidence: shared changed files, or a closing/superseded reference. -
Pairwise link density
0.40: the share of item pairs that carry a link, counting a structural link in full and a relevance-only link at 0.36.1.00means every pair is linked.
Pick up a Lab task
Check whether a fix covers the open issues here, with your own agent. Bring back evidence for maintainers.
Open the LabAt a glance
- Subsystem
- agent
- Merged PRs
- #17425
- Closed issues
- 1
- Attempts
- 2 PRs closed without merging
- Fix link checked
- 29 Apr 2026. This confirmation is old and may be out of date (a revert or reopen would not have invalidated it here); re-verify.