# NousResearch/hermes-agent · Bedrock Converse: skip sampling params for Opus 4.7/4.8

## Open now

- Nothing open on GitHub.

Multiple fixes and a bug report addressing that temperature and top_p must be omitted for Claude Opus 4.7 and 4.8 on the AWS Bedrock Converse API, which rejects those parameters with a 400 error.

## TL;DR

- 6 member(s): 0 open issue(s), 1 closed issue(s), 0 open PR(s), 1 merged PR(s), 4 PR(s) closed without merging.
- A fix was merged to main in PR #45675. Verify it addresses your case.
- **Recommended:** read PR #45675 (and any competing PRs below) before filing. Confirm the merged change covers your symptom.

## Maintainer resolution verdict

- Internal-tracker verdict over this cluster's issue members: `resolved` · deciding PR(s): `pr-45675`. This is distinct from the fix status above. Weigh it yourself.

## How this cluster was grouped

- Link evidence (`STRUCTURAL_SPANNING`): every member is connected by structural evidence: shared changed files, or a closing/superseded reference.
- Pairwise link density `0.33`: the share of member 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.

## Closed / duplicate issues

- #36151: bedrock_adapter: Opus 4.8 (and 4.7) on Bedrock Converse 400s with "temperature is deprecated" — _forbids_sampling_params guard never applied to Bedrock path

## Prior & competing PRs

- **#45675: fix(bedrock): omit sampling params for restricted Claude models**. merged to main · fix tier `verified`
  - maintainer direction: category `merged`; implication `superseded`
  - files: `agent/bedrock_adapter.py`, `tests/agent/test_bedrock_adapter.py`
  - fix hunks:
  - `agent/bedrock_adapter.py`

    ```diff
    @@ -935,11 +935,14 @@ def build_converse_kwargs(
         if system_prompt:
             kwargs["system"] = system_prompt
     
    -    if temperature is not None:
    -        kwargs["inferenceConfig"]["temperature"] = temperature
    +    from agent.anthropic_adapter import _forbids_sampling_params
     
    -    if top_p is not None:
    -        kwargs["inferenceConfig"]["topP"] = top_p
    +    if not _forbids_sampling_params(model):
    +        if temperature is not None:
    +            kwargs["inferenceConfig"]["temperature"] = temperature
    +
    +        if top_p is not None:
    +            kwargs["inferenceConfig"]["topP"] = top_p
     
         if stop_sequences:
             kwargs["inferenceConfig"]["stopSequences"] = stop_sequences
    ```
  - `tests/agent/test_bedrock_adapter.py`

    ```diff
    @@ -605,6 +605,74 @@ def test_includes_temperature_and_top_p(self):
             assert kwargs["inferenceConfig"]["temperature"] == 0.7
             assert kwargs["inferenceConfig"]["topP"] == 0.9
     
    +    def test_omits_sampling_params_for_bedrock_opus_4_7(self):
    +        from agent.bedrock_adapter import build_converse_kwargs
    +
    +        for model_id in (
    +            "anthropic.claude-opus-4-7-20260101-v1:0",
    +            "us.anthropic.claude-opus-4-7",
    +        ):
    +            kwargs = build_converse_kwargs(
    +                model=model_id,
    +                messages=[{"role": "user", "content": "Hi"}],
    +                temperature=0.7,
    +                top_p=0.9,
    +            )
    +
    +            assert "temperature" not in kwargs["inferenceConfig"]
    +            assert "topP" not in kwargs["inferenceConfig"]
    +
    +    def test_omits_sampling_params_for_bedrock_opus_4_8_variants(self):
    +        from agent.bedrock_adapter import build_converse_kwargs
    +
    +        for model_id in (
    +            "anthropic.claude-opus-4-8-20270101-v1:0",
    +            "us.anthropic.claude-opus-4-8",
    +            "anthropic.claude-opus-4.8",
    +        ):
    +            kwargs = build_converse_kwargs(
    +                model=model_id,
    +                messages=[{"role": "user", "content": "Hi"}],
    +                temperature=0.5,
    +                top_p=0.95,
    +            )
    +
    +            assert "temperature" not in kwargs["inferenceConfig"]
    +            assert "topP" not in kwargs["inferenceConfig"]
    +
    +    def test_keeps_sampling_params_for_bedrock_non_restricted_models(self):
    +        from agent.bedrock_adapter import build_converse_kwargs
    +
    +        for model_id in (
    +            "anthropic.claude-sonnet-4-6-20250514-v1:0",
    +            "anthropic.claude-haiku-4-5",
    +            "test-model",
    +        ):
    +            kwargs = build_converse_kwargs(
    +                model=model_id,
    +                messages=[{"role": "user", "content": "Hi"}],
    +                temperature=0.7,
    +                top_p=0.9,
    +            )
    +
    +            assert kwargs["inferenceConfig"].get("temperature") == 0.7
    +            assert kwargs["inferenceConfig"].get("topP") == 0.9
    +
    +    def test_bedrock_opus_strips_sampling_params_but_keeps_stop_sequences(self):
    +        from agent.bedrock_adapter import build_converse_kwargs
    +
    +        kwargs = build_converse_kwargs(
    +            model="us.anthropic.claude-opus-4-8",
    +            messages=[{"role": "user", "content": "Hi"}],
    +            temperature=0.7,
    +            top_p=0.9,
    +            stop_sequences=["END"],
    +        )
    +
    +        assert "temperature" not in kwargs["inferenceConfig"]
    +        assert "topP" not in kwargs["inferenceConfig"]
    +        assert kwargs["inferenceConfig"]["stopSequences"] == ["END"]
    +
         def test_includes_guardrail_config(self):
             from agent.bedrock_adapter import build_converse_kwargs
             guardrail = {
    ```
- **#36175: fix(bedrock): guard temperature/top_p for Opus 4.7/4.8 on Converse**. closed without merge
  - maintainer direction: category `implemented_elsewhere`; implication `superseded`; refs `957a8ffa88cb09224a5cbc4bb7a5a5a8706de6be`, `#45675`
- **#36257: fix(bedrock): guard temperature/top_p for Opus 4.7/4.8 on Converse API (#36151)**. closed without merge
  - maintainer direction: category `merged_via`; implication `superseded`; refs `#45675`, `#38717`
- **#37912: fix(bedrock): skip temperature/top_p for Opus 4.7+ on Converse API**. closed without merge
  - maintainer direction: category `implemented_elsewhere`; implication `superseded`; refs `957a8ffa88cb09224a5cbc4bb7a5a5a8706de6be`, `#36151`, `#45675`
- **#38717: fix(agent): skip temperature/topP for Opus 4.7/4.8 on Bedrock (#36151)**. closed without merge
  - maintainer direction: category `merged_via`; implication `superseded`; refs `957a8ffa8`, `#45675`, `#36257`

## Fix status

- Merged to main in PR #45675 (cited above). No release data is tracked. Verify downstream.
- Fix last verified (merged) `2026-06-13`.
- Subsystem: `agent`
