# NousResearch/hermes-agent · Dot-to-hyphen normalization scoped to Claude models only

## Open now

- Nothing open on GitHub.

A fix to restrict dot-to-hyphen character normalization in the Anthropic adapter to Claude-shaped model IDs, preventing incorrect mangling of non-Claude model names like OpenAI Codex identifiers.

## TL;DR

- 4 member(s): 0 open issue(s), 1 closed issue(s), 0 open PR(s), 1 merged PR(s), 2 PR(s) closed without merging.
- A fix was merged to main in PR #17454. Verify it addresses your case.
- **Recommended:** read PR #17454 (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-17454`. 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.50`: 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

- #17171: openai-codex fallback sends 'gpt-5-4' instead of 'gpt-5.4' to Codex backend, returning HTTP 404

## Prior & competing PRs

- **#17282: fix(anthropic_adapter): only mangle dots in Claude-shaped model IDs (#17171)**. closed without merge · fix tier `suggested`
  - maintainer direction: category `implemented_elsewhere`; implication `superseded`; refs `7141cda967c489d1fec0e17740222db0e6ac6331`, `#17282`, `#17171`, `#16417`, `#13061`, `#7421`
  - _suggested-tier fix detail withheld; re-request with `?tier=all` to include it._
- **#17454: fix(anthropic): narrow dot→hyphen normalization to Claude models only (#17171)**. merged to main · fix tier `verified`
  - maintainer direction: category `merged`
  - files: `agent/anthropic_adapter.py`
  - fix hunks:
  - `agent/anthropic_adapter.py`

    ```diff
    @@ -1076,9 +1076,12 @@ def normalize_model_name(model: str, preserve_dots: bool = False) -> str:
             # These must not be converted to hyphens.  See issue #12295.
             if _is_bedrock_model_id(model):
                 return model
    -        # OpenRouter uses dots for version separators (claude-opus-4.6),
    -        # Anthropic uses hyphens (claude-opus-4-6). Convert dots to hyphens.
    -        model = model.replace(".", "-")
    +        # Only convert dots to hyphens for Anthropic/Claude models.
    +        # Non-Anthropic models (gpt-5.4, gemini-2.5, etc.) use dots
    +        # as part of their canonical names.  See issue #17171.
    +        _lower = model.lower()
    +        if _lower.startswith("claude-") or _lower.startswith("anthropic/"):
    +            model = model.replace(".", "-")
         return model
     
     
    ```
- **#17290: fix: narrow Anthropic adapter dot-mangling to Claude models only (#17171)**. closed without merge
  - maintainer direction: category `merged_via`; implication `superseded`; refs `#17454`

## Fix status

- Merged to main in PR #17454 (cited above). No release data is tracked. Verify downstream.
- Fix last verified (merged) `2026-04-29`.
