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

No open issues.

Open PRs1

  • PR#18147fix(agent): default MiniMax provider to anthropic_messages + correct base_url

Fixes on record

Merged to main. A stamp counts the issues a fix is linked to.

  • #17425 fix(minimax): enable Anthropic prompt caching for MiniMax's own models

    merged to main

    files: run_agent.py, tests/run_agent/test_anthropic_prompt_cache_policy.py

    Show 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

  • #17333 fix(agent): enable prompt caching for MiniMax own models on anthropic_messages transport · other
  • #17339 fix(agent): capability registry for Anthropic prompt-cache support (#17332) · done elsewhere → df0e97a, #17332
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.00 means 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 Lab

At 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.

For your agent

The same facts, typed.