Changer d'agent vous coûte les règles que vous avez déjà écrites, pas l'installation


Vous avez un CLAUDE.md que vous peaufinez depuis un an — moitié vraies conventions, moitié excuses à votre vous passé. Vous avez une collection de règles Bash(...) que vous ne vous souvenez plus avoir ajoutées, quatre serveurs MCP branchés sur un projet annexe, et une douzaine de skills qui encodent chacun une leçon payée cher. Vous avez lu assez de choses sur Hermes pour avoir envie d’essayer. Puis vous faites le calcul du temps qu’il faudrait pour tout retaper, vous vous rappelez que vous oublierez la règle qui empêche l’agent de demander une autorisation quarante fois par jour, et vous fermez l’onglet.

Cet après-midi-là est exactement ce à quoi sert hermes import-agent. Il lit le répertoire de config d’un autre agent, détermine ce qu’il peut reprendre, et vous montre le plan élément par élément avant d’écrire un seul octet.

Trois termes reviendront ci-dessous. Un serveur MCP est un serveur d’outils que l’agent peut appeler — une base de données, un navigateur, un tracker d’issues — décrit par un petit bloc de config. Une allowlist est l’ensemble des commandes shell que l’agent peut exécuter sans s’arrêter pour demander. Un skill est un répertoire contenant un fichier SKILL.md qui enseigne une procédure.

L’installation prend une minute ; la config est le vrai patrimoine

Personne n’hésite parce qu’installer Hermes est difficile ; on hésite parce que la valeur, c’est la configuration accumulée : le fichier d’instructions qu’il a fallu des mois de « non, arrête de faire ça » pour obtenir, les règles d’approbation qui encodent votre tolérance au risque, les serveurs MCP qui ont coûté une soirée de débogage d’en-têtes. Chacun vit dans un format différent selon l’agent, et aucun n’est portable par défaut.

Tout réécrire à la main fait tomber ce que vous aviez oublié posséder, parce qu’on ne retape pas de mémoire ce qu’on n’a jamais écrit consciemment — et un outil qui copie mécaniquement ne s’ennuie pas au neuvième élément.

hermes import-agent prend en charge quatre sources : OpenClaw (~/.openclaw, y compris les anciens noms ~/.clawdbot et ~/.moltbot), Claude Code (~/.claude), OpenAI Codex CLI (~/.codex) et Cursor (~/.cursor).

Installez l’importateur une fois, puis demandez le plan

L’importateur est livré comme plugin officiel, agent-importers, maintenu par Nous Research dans le répertoire agent-importers du dépôt hermes-official-plugins. Installez-le une fois par profile — les plugins sont propres à un profile, donc un second profile a besoin de la même commande :

hermes plugins install agent-importers

Le plugin a bougé récemment : la v0.22.4 (2026-10-21) l’a sorti du cœur vers le catalogue et a ajouté Cursor comme source, et la v0.22.5 (2026-10-23) mentionne hermes import-agent, ainsi que setup qui propose un importateur lorsqu’il repère un autre agent.

Sans argument, la commande sonde les quatre répertoires. Avec un argument, elle va droit à cette source :

hermes import-agent                    # probe ~/.openclaw, ~/.claude, ~/.codex, ~/.cursor
hermes import-agent openclaw           # from ~/.openclaw
hermes import-agent claude-code        # from ~/.claude
hermes import-agent codex              # from ~/.codex
hermes import-agent cursor             # from ~/.cursor
hermes import-agent claude-code --dry-run           # plan only
hermes import-agent codex --source /path/to/.codex  # non-standard location
hermes import-agent claude-code --overwrite --yes   # resolve conflicts, skip prompts

Ce que la première forme ne fait pas, c’est fusionner quatre agents en un tas en espérant que ça passe. Elle rapporte source par source, élément par élément : trouvé, sera écrit, ignoré et pourquoi. --dry-run donne le même rapport et ne touche à rien sur le disque. --overwrite tranche les conflits en faveur de l’import ; --yes saute la confirmation, ce qui va bien dans un bootstrap scripté et devient risqué dès que vous avez édité la destination à la main.

hermes setup sur une installation neuve lance la même sonde en premier. Quand il trouve quelque chose, il demande « Import your setup from Claude Code? » et précise ce qu’il a trouvé ; quand il en trouve plusieurs, vous obtenez une liste où tout est coché. Dites oui et, si le profile n’a pas agent-importers, setup l’installe depuis le catalogue et déroule le même flux plan-aperçu-confirmation. Refusez, ou ne trouvez rien, et rien ne s’installe.

OpenClaw bénéficie d’un raffinement supplémentaire : setup passe automatiquement --migrate-secrets, en réutilisant l’étape de migration OpenClaw intégrée plus ancienne, de sorte que les clés API et les tokens de bot passent et que les sections provider et plateformes de messagerie soient déjà remplies. Choisissez ensuite Quick Setup et, si l’import a apporté un modèle et sa clé, setup demande s’il faut conserver ce modèle (le défaut) ou basculer sur Nous Portal.

Ce que chaque source remet réellement

Chaque source est lue pour les mêmes quatre catégories — instructions, approbations, serveurs MCP, skills — mais les dispositions diffèrent assez pour mériter une lecture préalable.

Source Ce qu’elle lit Où cela atterrit
Claude Code instructions globales de CLAUDE.md entrées de mémoire dans ~/.hermes/memories/MEMORY.md
Claude Code permissions.allow dans settings.json command_allowlist dans config.yaml
Claude Code permissions.deny dans settings.json approvals.deny dans config.yaml
Claude Code mcpServers, depuis ~/.claude.json et settings.json mcp_servers dans config.yaml
Claude Code répertoires skills/ contenant un SKILL.md ~/.hermes/skills/claude-code-imports/
Claude Code commandes slash commands/*.md ignorées, avec une suggestion de les réécrire en skill
Codex CLI instructions globales de AGENTS.md entrées de mémoire
Codex CLI [mcp_servers.*] de config.toml mcp_servers
Codex CLI memories/*.md entrées de mémoire
Codex CLI répertoires skills/ ~/.hermes/skills/codex-imports/
Cursor AGENTS.md entrées de mémoire
Cursor rules/*.md et rules/*.mdc (User Rules) entrées de mémoire
Cursor mcpServers dans mcp.json mcp_servers
Cursor répertoires de skills skills/**/ ~/.hermes/skills/cursor-imports/
OpenClaw ~/.openclaw (plus ~/.clawdbot, ~/.moltbot) mapping plus large, décrit plus bas

Les fichiers .mdc de Cursor portent un frontmatter — description, globs, alwaysApply — qui est de l’information de routage pour le moteur de règles de Cursor. Il est retiré et seul le corps devient de la mémoire : ces clés ne veulent rien dire pour Hermes, et les conserver créerait des règles qui semblent actives mais ne se déclenchent jamais. Les skills Cursor peuvent résider dans des dossiers de catégorie, donc skills/shipping/land-it/ s’importe en cursor-imports/land-it/ — le répertoire terminal est le skill, parce qu’un skill est le répertoire qui contient un SKILL.md. Deux skills de même nom dans des dossiers différents sont signalés comme un conflit.

Les commandes slash de Claude Code sont l’autre refus honnête. commands/*.md est ignoré avec un message plutôt que converti, et la suggestion est de le réécrire en skill — parce qu’une commande slash et un skill s’invoquent différemment, et qu’une conversion mécanique ne ferait que sembler fonctionner.

Les règles d’autorisation ne se traduisent pas forme pour forme

Le mapping est mécanique mais pas symétrique, et c’est la partie du plan qui mérite une lecture attentive.

Une règle de préfixe Bash(...) de Claude devient un glob : Bash(npm run test:*) arrive en npm run test*. L’intention survit — « cette famille de commandes, sans questions » — mais la notation, non. Si vous voulez resserrer ce qui est passé, le modèle d’approbation est couvert dans la configuration des approbations intelligentes.

Les règles non-Bash prennent l’autre chemin. Read(...), WebFetch et leurs semblables régissent des outils qui existent dans Claude Code et pas dans Hermes : elles sont donc signalées comme non mappées plutôt qu’importées de force dans quelque chose qui leur ressemble — une ligne « non mappée » vaut mieux qu’une clé de config qui se comporte autrement que ce que vous vouliez dire.

Les identifiants ne font jamais partie du chargement

Les clés API et les identifiants ne sont jamais importés, et c’est ce qui rend l’opération sûre sur un portable professionnel. Les fichiers d’identifiants — ~/.claude/.credentials.json, ~/.codex/auth.json, ~/.cursor/cli-config.json — ne sont pas lus du tout. Quand un bloc de serveur MCP transporte des variables d’environnement ou des en-têtes dont le nom ressemble à un secret (*_TOKEN, *_API_KEY, Authorization), ces valeurs sont retirées et listées dans le rapport, pour que vous puissiez les remettre en sachant exactement lesquelles sont parties.

Deux routes les restaurent : hermes setup pour la configuration du provider, ou l’écriture des secrets dans ~/.hermes/.env. Pour éviter des clés en clair dans un dotfile, l’approche adossée au keychain décrite dans le chiffrement des secrets est l’alternative.

La seule exception, c’est OpenClaw, et elle est opt-in : seul un --migrate-secrets explicite fait passer les clés API et tokens de bot autorisés.

Trois choses que vous devez finir à la main

L’importateur déplace de la structure ; il ne peut pas terminer le travail.

Remettez les secrets en place. Chaque serveur MCP dont les en-têtes ont été retirés a besoin de son token avant de se connecter, et des identifiants manquants se manifestent comme un outil qui échoue au premier appel plutôt que comme une erreur d’import. La façon dont les serveurs MCP et les variables de contexte se résolvent est traitée dans config MCP et variables de contexte.

Réécrivez les commandes slash. Une commande /review ou /ship a été ignorée. Le remplacement est un skill, généralement vingt minutes par commande — à faire dans l’ordre où vous les utilisez réellement.

Relisez les approbations. L’allowlist et la deny list importées sont un premier jet produit par un outil qui n’a jamais vu votre tolérance au risque. Vérifiez que chaque glob correspond à ce que vous croyez, et que rien d’important n’a atterri dans le rapport des non-mappés. Si plus de texte d’instructions que prévu est passé, la chaîne de répertoires AGENTS.md explique comment les fichiers d’instructions s’empilent dans Hermes.

À surveiller avant de dire oui

  • Les plugins sont propres à un profile. agent-importers installé pour votre profile principal ne fait rien pour le second.
  • Les conflits sont signalés, pas résolus en silence. Deux skills Cursor de même nom, ou un fichier existant à la destination, apparaissent comme conflits. --overwrite les tranche en faveur de l’import.
  • OpenClaw a son propre guide et ses propres flags. Ce guide couvre le mapping complet — persona, mémoire, skills, providers de modèles, plateformes de messagerie, comportement de l’agent, serveurs MCP — plus --preset, --migrate-secrets, --workspace-target et --skill-conflict, une sauvegarde avant migration, et hermes claw cleanup ensuite. L’ancienne écriture hermes claw migrate lance toujours le même import.
  • Les installations non standard ont besoin de --source. Si Codex vit hors de ~/.codex, la sonde ne le trouvera pas.

La moitié transcription, l’importateur la fait sans faute de frappe — et il vous remet un reçu pour tout ce qu’il a laissé à votre jugement.