# Configuration

> Fichiers de réglages de Moon CLI et de l’agent, leurs emplacements par système, les clés disponibles, les variables d’environnement et leur ordre de priorité.

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.

## Emplacements

| Fichier ou dossier | macOS, Linux, WSL | Windows |
| --- | --- | --- |
| Réglages de Moon CLI | `~/.config/moon/moon.json` | `%USERPROFILE%\.config\moon\moon.json` |
| Configuration personnelle de l’agent | `~/.config/moon/opencode.json` | `%USERPROFILE%\.config\moon\opencode.json` |
| Interface de l’agent | `~/.config/moon/tui.json` | `%USERPROFILE%\.config\moon\tui.json` |
| Instructions personnelles | `~/.config/moon/AGENTS.md` | `%USERPROFILE%\.config\moon\AGENTS.md` |
| Skills personnelles | `~/.claude/skills/`, `~/.agents/skills/` | `%USERPROFILE%\.claude\skills\`, `%USERPROFILE%\.agents\skills\` |
| Commandes personnelles | `~/.config/moon/commands/` | `%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/skills/`, `.agents/skills/` | Skills du projet. |
| `AGENTS.md`, `CLAUDE.md`, `CONTEXT.md` | Instructions du projet. |

> [!WARNING]
> **Configuration d’un dépôt**
>
> Ces fichiers ne sont lus qu’après votre accord, donné au lancement de `moon`. Sans accord, rien n’est lu du dépôt, pas même `AGENTS.md`. Voir [Configuration d’un dépôt](https://realmoon.ai/documentation/moon-cli/utiliser/#confiance).

## Réglages de Moon CLI (`moon.json`)

```json title="~/.config/moon/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 <mode>` |
| `blur.projects` | chemin complet du dossier : mode | Mode de Moon Blur pour un dossier précis. | `moon blur <mode> --here` |
| `blur.allow` | liste d’empreintes SHA-256 | Valeurs que Moon Blur ne masque plus. | `moon blur allow <valeur>` |
| `guard.enabled` | `true`, `false` | Moon Guard activé ou non. Absent : désactivé. | `moon guard on`, `moon guard off` |
| `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`)

Le même format sert pour le fichier personnel et pour celui d’un projet. Exemple de fichier de projet :

```json title="opencode.json"
{
  "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/<identifiant>`. Voir [Modèle par défaut](https://realmoon.ai/documentation/moon-cli/configuration/#modele). |
| `permission` | Règles de confirmation des outils. Voir [Permissions](https://realmoon.ai/documentation/moon-cli/configuration/#permissions). |
| `mcp` | Serveurs MCP. Voir [Serveurs MCP](https://realmoon.ai/documentation/moon-cli/configuration/#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](https://realmoon.ai/documentation/moon-cli/configuration/#commandes). |
| `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é

### 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.

1. Votre configuration personnelle (`~/.config/moon/opencode.json`).
2. 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.
3. La configuration du projet, si vous l’avez approuvée : les fichiers `opencode.json` de la racine du dépôt jusqu’au dossier ouvert, puis les dossiers `.opencode/`.
4. La configuration gérée par l’administrateur du poste (voir [plus bas](https://realmoon.ai/documentation/moon-cli/configuration/#geree)).
5. 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 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=1`, par la variable `CI`, par `updates.auto: false`, sans terminal interactif ou avec `MOON_API_KEY`. Sinon active. |

## Modèle par défaut

Au lancement, l’agent choisit son modèle dans cet ordre :

1. l’option `-m moonai/<identifiant>` (ou `--model`) de `moon` ou de `moon run` ;
2. la clé `model` de la configuration du projet approuvée ;
3. 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/`.

```bash title="Terminal"
moon models
moon -m moonai/anthropic/claude-haiku-4.5
```

Le choix du modèle et les niveaux de coût sont détaillés dans [Workspaces et modèles](https://realmoon.ai/documentation/moon-cli/workspaces-modeles/#modeles).

## 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 à `~/.config/moon`.

Trois façons de réduire les demandes :

- **Le mode de la session** : modifications acceptées ou approbation automatique, avec `Maj` `Tab`, `/modifications` ou `/auto`. Voir [Modes de permission](https://realmoon.ai/documentation/moon-cli/utiliser/#modes).
- **« 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.

```json title="opencode.json du projet"
{
  "permission": {
    "bash": {
      "*": "ask",
      "npm test": "allow",
      "git status": "allow",
      "rm *": "deny"
    },
    "webfetch": "deny",
    "context7_*": "allow"
  }
}
```

> [!WARNING]
> Une règle `allow` s’applique sans confirmation, y compris quand l’agent travaille à partir d’un fichier piégé. N’autorisez que des commandes sans effet destructeur. Pour bloquer les commandes dangereuses quel que soit le mode, activez [Moon Guard](https://realmoon.ai/documentation/moon-cli/moon-guard/).

## 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`.

```bash title="Terminal"
moon blur redact          # tous vos projets
moon blur strict --here   # ce dossier seulement
```

Modes, détection et valeurs autorisées : [Moon Blur dans Moon CLI](https://realmoon.ai/documentation/moon-cli/moon-blur/).

## Moon Guard

Moon Guard est désactivé par défaut. `moon guard on` l’active pour les lancements suivants (clé `guard.enabled`), `MOON_GUARD=on` pour un seul lancement. Voir [Moon Guard](https://realmoon.ai/documentation/moon-cli/moon-guard/).

## Serveurs MCP

`/mcp` écrit les serveurs dans votre configuration personnelle (`~/.config/moon/opencode.json`). 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": "Bearer {env:MON_JETON}"`. |
| `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](https://realmoon.ai/documentation/moon-cli/serveurs-mcp/).

## 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 | `~/.claude/skills/<nom>/`, `~/.agents/skills/<nom>/` |
| Projet (après accord) | `.opencode/skills/<nom>/`, `.claude/skills/<nom>/`, `.agents/skills/<nom>/` |

Dans l’agent, `/skills` liste les skills disponibles ; chacune s’appelle aussi directement avec `/<nom>`.

## Fichiers d’instructions

Les fichiers d’instructions accompagnent chaque appel au modèle. L’agent lit :

1. une seule instruction personnelle : `~/.config/moon/AGENTS.md`, sinon `~/.claude/CLAUDE.md` ;
2. dans le projet approuvé, les fichiers `AGENTS.md` de la racine du dépôt jusqu’au dossier ouvert. S’il n’y en a aucun, les `CLAUDE.md`, sinon les `CONTEXT.md` ;
3. les fichiers listés par la clé `instructions` ;
4. en cours de session, l’`AGENTS.md` d’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ées

Un fichier Markdown dans `~/.config/moon/commands/` (pour vous) ou `.opencode/commands/` (pour le projet) devient une commande `/` de l’agent, du nom du fichier.

```markdown title=".opencode/commands/test-module.md"
---
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.
```

`/test-module paiement` 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`)

```json title="~/.config/moon/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 (`Ctrl` `X` 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](https://realmoon.ai/documentation/moon-cli/commandes/#raccourcis).

## 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 | `/etc/moon/opencode.json` |
| macOS | `/Library/Application Support/moon/opencode.json`, 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’environnement

### 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](https://realmoon.ai/documentation/moon-cli/utiliser/#ci). |
| `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`, `~/.local/share`, `~/.cache` et `~/.local/state`. |

### 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](https://realmoon.ai/documentation/moon-cli/installation/#options).

### 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. |

### 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.

## Voir aussi

- [Référence des commandes](https://realmoon.ai/documentation/moon-cli/commandes/)
- [Utiliser l’agent](https://realmoon.ai/documentation/moon-cli/utiliser/)
- [Emplacements des fichiers d’installation](https://realmoon.ai/documentation/moon-cli/installation/#emplacements)

---

Documentation Moon AI › Moon CLI › Configuration. Page : https://realmoon.ai/documentation/moon-cli/configuration/. Modifiée le 5 novembre 2026.

© 2026 Stellarr Studio SAS. Tous droits réservés. Moon AI, Moon Blur et Stellarr Studio sont des marques déposées à l’INPI.
