Moon CLI lit deux familles de fichiers : ses propres réglages (moon.json), écrits par les commandes moon blur et moon guard, et la configuration de l’agent (opencode.json, tui.json et des dossiers de skills, de commandes et d’instructions). Chacune existe en version personnelle, valable pour tous vos projets, et la configuration de l’agent existe aussi au niveau d’un projet.
EmplacementsLien vers la section Emplacements
| Fichier ou dossier | macOS, Linux, WSL | Windows |
|---|---|---|
| Réglages de Moon CLI | ~/ | %USERPROFILE%\.config\moon\moon.json |
| Configuration personnelle de l’agent | ~/ | %USERPROFILE%\.config\moon\opencode.json |
| Interface de l’agent | ~/ | %USERPROFILE%\.config\moon\tui.json |
| Instructions personnelles | ~/ | %USERPROFILE%\.config\moon\AGENTS.md |
| Skills personnelles | ~/, ~/ | %USERPROFILE%\.claude\skills\, %USERPROFILE%\.agents\skills\ |
| Commandes personnelles | ~/ | %USERPROFILE%\.config\moon\commands\ |
La configuration de l’agent accepte aussi les noms opencode.jsonc (avec commentaires) et config.json dans le même dossier. Si vous définissez XDG_CONFIG_HOME, le dossier ~/.config est remplacé par sa valeur.
Dans un projet, l’agent lit les fichiers suivants, entre la racine du dépôt Git et le dossier ouvert :
| Fichier ou dossier | Rôle |
|---|---|
opencode.json, opencode.jsonc | Configuration de l’agent pour ce projet. |
tui.json, tui.jsonc | Interface de l’agent pour ce projet. |
.opencode/ | Commandes, agents, skills et plugins du projet. |
.claude/, .agents/ | Skills du projet. |
AGENTS.md, CLAUDE.md, CONTEXT.md | Instructions du projet. |
Réglages de Moon CLI (moon.json)Lien vers la section Réglages de Moon CLI (moon.json)
{
"blur": {
"mode": "secrets",
"projects": { "/home/alice/code/client": "redact" },
"allow": ["<empreinte SHA-256 d’une valeur>"]
},
"guard": { "enabled": true },
"updates": { "auto": true }
}| Clé | Valeurs | Effet | Commande qui l’écrit |
|---|---|---|---|
blur.mode | off, secrets, redact, strict, detect | Mode de Moon Blur pour tous vos projets. Absent : secrets. | moon |
blur.projects | chemin complet du dossier : mode | Mode de Moon Blur pour un dossier précis. | moon |
blur.allow | liste d’empreintes SHA-256 | Valeurs que Moon Blur ne masque plus. | moon |
guard.enabled | true, false | Moon Guard activé ou non. Absent : désactivé. | moon , moon |
updates.auto | true, false | false coupe la mise à jour automatique. | aucune, à écrire vous-même |
Un dépôt ne peut pas modifier ce fichier, et les outils de l’agent n’y ont pas accès. Un fichier illisible est ignoré : tous les réglages reviennent alors à leur valeur par défaut.
Configuration de l’agent (opencode.json)Lien vers la section Configuration de l’agent (opencode.json)
Le même format sert pour le fichier personnel et pour celui d’un projet. Exemple de fichier de projet :
{
"model": "moonai/anthropic/claude-haiku-4.5",
"instructions": ["guides/conventions.md"],
"permission": {
"bash": {
"*": "ask",
"npm test": "allow"
}
},
"mcp": {
"context7": { "type": "remote", "url": "https://mcp.context7.com/mcp", "enabled": true }
}
}| Clé | Effet |
|---|---|
model | Modèle par défaut, au format moonai/. Voir Modèle par défaut. |
permission | Règles de confirmation des outils. Voir Permissions. |
mcp | Serveurs MCP. Voir Serveurs MCP. |
instructions | Fichiers d’instructions en plus d’AGENTS.md : chemins ou motifs (guides/*.md), absolus, commençant par ~/ ou relatifs au projet. |
command | Commandes personnalisées. Voir Commandes personnalisées. |
skills.paths | Dossiers de skills en plus des emplacements habituels. |
compaction.threshold | Seuil de compaction automatique : une part de la fenêtre de contexte (de 0 à 1, 0.8 par défaut) ou un nombre de jetons. |
Une valeur peut reprendre une variable d’environnement avec {env:NOM}, ou le contenu d’un fichier avec {file:chemin} (chemin relatif au fichier de configuration, ou commençant par ~/). Utilisez-les pour ne pas écrire de secret en clair dans un fichier versionné.
Moon CLI ne laisse passer aucun autre fournisseur de modèles que Moon AI : une clé provider ou enabled_providers qui en ajouterait un est ignorée, et le partage de session reste désactivé.
Ordre de prioritéLien vers la section Ordre de priorité
Configuration de l’agentLien vers la section Configuration de l’agent
Les sources sont fusionnées dans cet ordre ; une clé définie plus bas remplace la même clé définie plus haut.
- Votre configuration personnelle (
~/)..config/ moon/ opencode.json - Les réglages de session posés par Moon CLI à chaque lancement : fournisseur Moon AI et ses modèles, modèle Auto, petit modèle pour les tâches de fond, compaction automatique, permissions par défaut.
- La configuration du projet, si vous l’avez approuvée : les fichiers
opencode.jsonde la racine du dépôt jusqu’au dossier ouvert, puis les dossiers.opencode/. - La configuration gérée par l’administrateur du poste (voir plus bas).
- Les clés verrouillées par Moon CLI : fournisseur unique Moon AI, partage désactivé, pas de mise à jour de l’agent par lui-même.
Les listes instructions s’additionnent d’une source à l’autre. Conséquence de cet ordre : dans votre configuration personnelle, les clés model, small_model, compaction.auto, compaction.prune et les règles edit, bash, webfetch, websearch sont remplacées par celles de Moon CLI. Pour les changer, utilisez la configuration d’un projet.
Réglages de Moon CLILien vers la section Réglages de Moon CLI
| Réglage | Ordre, du plus fort au plus faible |
|---|---|
| Mode de Moon Blur | variable MOON_BLUR_MODE, réglage du dossier, réglage par défaut, secrets. Un workspace qui impose Moon Blur remplace off par secrets. |
| Moon Guard | variable MOON_GUARD, clé guard.enabled, désactivé. |
| Mise à jour automatique | coupée par MOON_DISABLE_AUTOUPDATE=, par la variable CI, par updates.auto: , sans terminal interactif ou avec MOON_API_KEY. Sinon active. |
Modèle par défautLien vers la section Modèle par défaut
Au lancement, l’agent choisit son modèle dans cet ordre :
- l’option
-m(oumoonai/ <identifiant> --model) demoonou demoon run; - la clé
modelde la configuration du projet approuvée ; - Auto, le modèle par défaut de Moon CLI.
Le modèle choisi dans l’agent avec /models vaut pour la session en cours ; au lancement suivant, Moon CLI repart sur la règle ci-dessus. moon models liste les identifiants disponibles, déjà préfixés par moonai/.
moon models
moon -m moonai/anthropic/claude-haiku-4.5Le choix du modèle et les niveaux de coût sont détaillés dans Workspaces et modèles.
PermissionsLien vers la section Permissions
Par défaut, l’agent demande votre accord avant :
| Clé | Action |
|---|---|
edit | Créer, modifier ou supprimer un fichier. |
bash | Lancer une commande. |
webfetch | Lire une page web. |
websearch | Faire une recherche sur le web. |
<serveur>_* | Utiliser un outil d’un serveur MCP (par exemple context7_*). |
Les outils de fichiers de l’agent n’ont jamais accès au dossier d’état de Moon CLI (votre session) ni à ~/.
Trois façons de réduire les demandes :
- Le mode de la session : modifications acceptées ou approbation automatique, avec MajTab,
/oumodifications /auto. Voir Modes de permission. - « Toujours autoriser » sur une demande, quand elle le propose.
- Des règles dans la configuration du projet, sous la clé
permission.
Une règle vaut allow (sans demande), ask (demande) ou deny (refus). Pour bash, une règle peut viser un motif de commande, où * remplace n’importe quelle suite de caractères ; quand plusieurs motifs correspondent, la dernière règle écrite l’emporte.
{
"permission": {
"bash": {
"*": "ask",
"npm test": "allow",
"git status": "allow",
"rm *": "deny"
},
"webfetch": "deny",
"context7_*": "allow"
}
}Moon BlurLien vers la section Moon Blur
Le mode se règle avec moon blur (enregistré dans moon.json), pour un terminal avec MOON_BLUR_MODE, et pendant une session avec /blur.
moon blur redact # tous vos projets
moon blur strict --here # ce dossier seulementModes, détection et valeurs autorisées : Moon Blur dans Moon CLI.
Moon GuardLien vers la section Moon Guard
Moon Guard est désactivé par défaut. moon l’active pour les lancements suivants (clé guard.enabled), MOON_GUARD= pour un seul lancement. Voir Moon Guard.
Serveurs MCPLien vers la section Serveurs MCP
/mcp écrit les serveurs dans votre configuration personnelle (~/). Vous pouvez aussi les déclarer à la main, dans ce fichier ou dans celui d’un projet, sous la clé mcp :
| Clé | Type de serveur | Effet |
|---|---|---|
type | tous | local (lancé sur votre machine) ou remote (à une adresse). |
enabled | tous | false : le serveur n’est pas lancé au démarrage. |
timeout | tous | Délai d’une requête au serveur, en millisecondes (5 000 par défaut). |
command | local | Commande et arguments, sous forme de liste. |
environment | local | Variables d’environnement passées au serveur. |
cwd | local | Dossier de travail du serveur, relatif au projet. |
url | remote | Adresse du serveur. |
headers | remote | En-têtes HTTP, par exemple un jeton : "Authorization": . |
oauth | remote | Réglages de connexion OAuth (clientId, clientSecret, scope, callbackPort), ou false pour ne pas tenter de connexion OAuth. |
Ajout, connexion et sécurité des serveurs : Serveurs MCP dans Moon CLI.
SkillsLien vers la section Skills
Une skill est un dossier qui contient un fichier SKILL.md : un nom et une description en en-tête, puis les consignes, et éventuellement des scripts. L’agent la charge quand la tâche s’y prête.
| Portée | Dossiers |
|---|---|
| Personnelle | ~/, ~/ |
| Projet (après accord) | .opencode/, .claude/, .agents/ |
Dans l’agent, /skills liste les skills disponibles ; chacune s’appelle aussi directement avec /<nom>.
Fichiers d’instructionsLien vers la section Fichiers d’instructions
Les fichiers d’instructions accompagnent chaque appel au modèle. L’agent lit :
- une seule instruction personnelle :
~/, sinon.config/ moon/ AGENTS.md ~/;.claude/ CLAUDE.md - dans le projet approuvé, les fichiers
AGENTS.mdde la racine du dépôt jusqu’au dossier ouvert. S’il n’y en a aucun, lesCLAUDE.md, sinon lesCONTEXT.md; - les fichiers listés par la clé
instructions; - en cours de session, l’
AGENTS.mdd’un sous-dossier dont l’agent lit un fichier.
Chaque fichier est coupé au-delà de 40 Ko (le début est gardé), et l’ensemble est limité à 100 Ko. Au lancement, Moon CLI signale tout fichier de plus de 40 Ko avec une estimation des jetons envoyés à chaque appel. /init crée ou met à jour l’AGENTS.md du projet.
Commandes personnaliséesLien vers la section Commandes personnalisées
Un fichier Markdown dans ~/ (pour vous) ou .opencode/ (pour le projet) devient une commande / de l’agent, du nom du fichier.
---
description: Lance les tests d’un module et explique les échecs
---
Lance les tests du module $ARGUMENTS, puis résume chaque échec et propose une correction./ envoie le texte au modèle en remplaçant $ARGUMENTS par paiement ; $1, $2 désignent les arguments un par un. L’en-tête accepte aussi agent (agent qui exécute la commande), model et subtask (true : exécutée par un sous-agent).
Interface de l’agent (tui.json)Lien vers la section Interface de l’agent (tui.json)
{
"keybinds": {
"leader": "ctrl+x",
"session_new": "<leader>n"
},
"mouse": true,
"diff_style": "auto"
}| Clé | Effet |
|---|---|
keybinds | Raccourcis clavier. leader est la touche préfixe (CtrlX par défaut) ; la valeur none désactive un raccourci. |
mouse | false : la souris n’est plus capturée par l’interface. |
diff_style | auto (s’adapte à la largeur du terminal) ou stacked (toujours une colonne). |
scroll_speed | Vitesse de défilement. |
Le thème se choisit avec /themes. La liste des raccourcis par défaut est dans Raccourcis clavier.
Configuration gérée par l’administrateurLien vers la section Configuration gérée par l’administrateur
Sur un poste d’entreprise, l’administrateur peut imposer une configuration de l’agent, appliquée après celle de la personne et du projet :
| Système | Fichier |
|---|---|
| Linux | / |
| macOS | /, ou un profil de gestion des appareils (domaine ai.realmoon.moon.managed) |
| Windows | C:\ProgramData\moon\opencode.json |
Le dossier et le fichier doivent appartenir à l’administration du poste (root sans écriture pour le groupe ni les autres sous Linux et macOS, Administrateurs ou SYSTEM sous Windows) ; sinon ils sont ignorés.
Variables d’environnementLien vers la section Variables d’environnement
Moon CLILien vers la section Moon CLI
| Variable | Effet |
|---|---|
MOON_BLUR_MODE | Mode de Moon Blur pour ce terminal (off, secrets, redact, strict, detect). L’emporte sur moon.json. |
MOON_GUARD | on ou off pour un lancement (1, true, oui et 0, false, non sont acceptés). |
MOON_API_KEY | Clé d’API de workspace, pour une exécution sans terminal. Voir En intégration continue. |
MOON_TRUST_PROJECT | 1 : charge la configuration du dépôt sans poser la question. |
MOON_ALLOW_BROAD_DIR | 1 : pas d’avertissement dans le dossier personnel ou à la racine d’un disque. |
MOON_DISABLE_AUTOUPDATE | 1 : coupe la mise à jour automatique. |
CI | Définie (comme dans la plupart des services d’intégration continue) : pas de mise à jour automatique. |
NO_COLOR | Sorties du lanceur sans couleurs. |
XDG_CONFIG_HOME, XDG_DATA_HOME, XDG_CACHE_HOME, XDG_STATE_HOME | Remplacent ~/.config, ~/, ~/.cache et ~/. |
InstallationLien vers la section Installation
| Variable | Effet |
|---|---|
MOON_INSTALL_DIR | Dossier de la commande moon, lu par l’installeur et par les mises à jour. |
MOON_NO_MODIFY_PATH | 1 : l’installeur ne modifie pas le PATH. |
MOON_VERSION | Version à installer (installeur Windows). |
Détail : Options d’installation.
RéseauLien vers la section Réseau
| Variable | Effet |
|---|---|
HTTPS_PROXY, HTTP_PROXY, ALL_PROXY | Proxy réseau vers Moon AI. |
NO_PROXY | Adresses jointes sans proxy. Moon CLI y ajoute lui-même 127.0.0.1, localhost et ::1 pour l’agent. |
NODE_EXTRA_CA_CERTS | Certificat de votre entreprise, quand un proxy intercepte le HTTPS. |
AgentLien vers la section Agent
L’agent reçoit votre environnement, sauf les variables MOON_* et OTEL_*. Parmi ses propres variables, seules celles-ci lui sont transmises :
| Variable | Effet |
|---|---|
OPENCODE_SERVER_PASSWORD, OPENCODE_SERVER_USERNAME | Identifiants du serveur local lancé par moon serve. |
OPENCODE_DISABLE_MOUSE | 1 : la souris n’est plus capturée. |
OPENCODE_DISABLE_TERMINAL_TITLE | 1 : l’agent ne change pas le titre du terminal. |
OPENCODE_DISABLE_AUTOCOMPACT | 1 : pas de compaction automatique de la conversation. |
OPENCODE_GIT_BASH_PATH | Windows : chemin de bash.exe de Git, pour l’outil de commandes. |
OPENCODE_LOG_LEVEL | Niveau du journal : DEBUG, INFO, WARN ou ERROR. |
Les autres variables de votre environnement, comme GITHUB_TOKEN, restent visibles par l’agent et par les commandes qu’il lance.