Failed to parse Hermes config: duplicate entry - Hermes
Quick fix
升级 cc-switch 至 v3.16.3+ 以修复 CRLF 换行导致的配置追加 bug,或手动删除 config.yaml 中的重复键。
Symptom
Section titled “Symptom”配置错误: Failed to parse Hermes config as YAML: duplicate entry with key "mcp_servers"在 Windows 系统下,Hermes 生成的 `config.yaml` 默认使用 CRLF (`\r\n`) 换行符。cc-switch 的 Rust 代码在按 `\n` 分割行时,行尾残留的 `\r` 导致顶层键识别函数失效。
这使得 cc-switch 在修改配置时无法找到现有的 `custom_providers`、`model` 或 `mcp_servers` 代码块,从而退化为在文件末尾直接追加新配置,最终产生重复的 YAML 顶层键并引发解析报错。部分情况下,如果供应商内部字段(如 `base_url`)重复,也会引发类似的嵌套键重复报错。
升级 cc-switch 到 v3.16.3 或更高版本。新版本修复了 CRLF 识别问题,并在读取时自动容忍和清理历史重复键,无需手动修改文件。
若急需解决且无法升级,请手动打开配置文件,删除重复的 `custom_providers`、`model` 或 `mcp_servers` 代码块(通常保留最后一份即可)。
~/.hermes/config.yaml (Windows 下为 %LOCALAPPDATA%\hermes\config.yaml) custom_providers:- name: 'old_duplicate'base_url: '...'如果本地并未安装 Hermes,可直接删除 `~/.hermes` 目录以彻底消除报错。
Affected Versions
Section titled “Affected Versions”ToolHermes
Version3.13.0 - 3.16.2
PlatformsWindowsmacOSLinux
Source Issues
Section titled “Source Issues”本页汇总自 6 个真实 issue
- #2529Bug: Hermes config YAML duplicate entry with key custom_providers
- #2973Bug: hermesConfigDir causes duplicate YAML keys (custom_providers / model) on Windows
- #3762配置错误: Failed to parse Hermes config as YAML: duplicate entry with key "mcp_servers"
- #3851"Apply <agent> config" 写入策略会产生 YAML duplicate 键
- #3929切换模型的时候报错这个是什么原因?Failed to parse Hermes config as YAML: duplicate entry with key "mcp_servers"
- #4321mac 添加供应商失败
- 为什么我手动删除了重复键,下次切换供应商时又报错了?
- 因为旧版本 cc-switch 的 CRLF 解析缺陷依然存在,每次写入都会再次追加重复块。必须升级到 v3.16.3+ 才能根治此问题。
- 我根本没有安装 Hermes,为什么会出现这个报错?
- cc-switch 默认会尝试管理 Hermes 配置并自动生成 `~/.hermes` 目录。如果不需要此功能,直接删除该目录,或在 `settings.json` 中将 Hermes 从 `visibleApps` 中禁用即可。
Function call is missing a thought_signature在 Claude Desktop 代理模式下使用 Gemini Native 触发工具调用时,因会话 ID 不匹配导致 thought_signature 丢失,需等待官方修复。gemini开启本地代理后对话说无效令牌 cc-switch将 Gemini 供应商的渠道从 codex 分组改回 gemini 分组,开启本地代理后即可避免请求被错误路由而报无效令牌。Gtk-CRITICAL: gtk_widget_get_scale_factor 失败在 Linux 或 WSL2 中运行 cc-switch 遇到 GTK 断言失败时,请修改 settings.json 关闭静默启动,或清理残留配置重装。
这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。