> ## Documentation Index
> Fetch the complete documentation index at: https://docs.base44.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Utiliser votre propre agent

> Pointez votre propre agent IA de codage, ou vos propres scripts, vers l'environnement cloud qui contient le code de votre app

Utilisez votre propre agent IA de codage, ou vos propres scripts, avec une app Base44 en vous connectant à son sandbox. Le sandbox est un environnement cloud privé qui contient le code de la branche actuellement active dans l'éditeur d'app, et exécute son serveur de développement. C'est le même environnement, et le même code, que l'éditeur d'app Base44 lui-même modifie, sans fork ni copie à synchroniser. Quand vous écrivez un fichier via une commande sandbox, vous modifiez directement votre vraie app, sur sa branche active, comme le ferait l'éditeur d'app.

Ça vous permet de développer une app avec vos propres outils au lieu de l'éditeur d'app, sans checkout local et sans rien à installer. Travaillez sur une app depuis une machine qui n'en a pas de copie, ou scriptez un changement sur une app entièrement construite dans l'éditeur d'app.

<Note>
  Éditer via le sandbox n'est pas la même chose que publier. Votre édition devient partie du code de l'app immédiatement et apparaît dans l'éditeur d'app et son aperçu en direct, mais atteindre le site public de l'app nécessite toujours la même étape de publication qu'un changement fait dans l'éditeur d'app.
</Note>

<Warning>
  Vous avez besoin d'un [**plan Builder**](/Account-and-billing/Billing-and-plans) ou supérieur pour atteindre le sandbox d'une app depuis l'extérieur de l'éditeur d'app. Sans un plan, les commandes échouent avec `PREMIUM_REQUIRED`.
</Warning>

Le sandbox lui-même est un processus de calcul actif, pas juste du stockage : il s'arrête quand il reste inactif un moment, et redémarre à la commande suivante. Votre code n'est pas affecté dans les deux cas, car il vit dans git plutôt que dans ce processus. Si le sandbox n'est pas en cours d'exécution, la première commande le démarre, et cet appel prend plus de temps que ceux qui suivent.

## Deux façons de se connecter

Le sandbox expose le même ensemble d'opérations via deux surfaces, soutenues par la même implémentation. Utilisez celle qui convient à votre configuration.

* **[CLI](/developers/references/cli/get-started/overview) :** Convient à tout ce qui s'exécute sur votre propre machine, y compris un agent de codage local et vos propres scripts. Authentifiez-vous une fois avec [`base44 login`](/developers/references/cli/commands/login), puis ciblez l'app avec [`--app-id`](/developers/references/cli/commands/introduction#select-a-target-app) ou la variable d'environnement `BASE44_APP_ID`. Aucun projet local n'est requis.
* **[Serveur MCP](/developers/backend/overview/mcp-server) :** Convient à un assistant IA qui se connecte via MCP, y compris les assistants basés sur le web qui ne peuvent pas exécuter de CLI. Connectez-le une fois et autorisez avec OAuth.

| Opération                            | Commande CLI                                                                   | Outil MCP           |
| ------------------------------------ | ------------------------------------------------------------------------------ | ------------------- |
| Lister un répertoire                 | [`sandbox ls`](/developers/references/cli/commands/sandbox-ls)                 | `list_directory`    |
| Lire des fichiers                    | [`sandbox read`](/developers/references/cli/commands/sandbox-read)             | `read_file`         |
| Rechercher dans les fichiers         | [`sandbox grep`](/developers/references/cli/commands/sandbox-grep)             | `grep`              |
| Créer un fichier                     | [`sandbox write`](/developers/references/cli/commands/sandbox-write)           | `write_file`        |
| Modifier un fichier existant         | [`sandbox edit`](/developers/references/cli/commands/sandbox-edit)             | `edit_file`         |
| Exécuter une commande shell          | [`sandbox run`](/developers/references/cli/commands/sandbox-run)               | `run_command`       |
| Enregistrer un point de restauration | [`sandbox checkpoint`](/developers/references/cli/commands/sandbox-checkpoint) | `create_checkpoint` |

Les connecteurs ne passent pas par le système de fichiers du sandbox, donc ils ne sont pas dans le tableau ci-dessus. Pour configurer un connecteur sur une app avec laquelle vous travaillez de cette façon, utilisez plutôt [`connectors initiate`](/developers/references/cli/commands/connectors-initiate). Ça cible le même app id directement, sans sandbox ni projet local.

<Tip>
  La façon la plus rapide de démarrer avec votre propre agent de codage est d'utiliser **Send to Coding Agent** dans l'éditeur d'app Base44. Sur desktop, ouvrez **More actions** (les trois points à côté de **Publish**, en haut à droite) et sélectionnez **Send to Coding Agent**. Choisissez un agent CLI local ou un chat web, et il vous donne un prompt prêt à coller, donc vous n'avez rien à configurer à la main. Ça n'est pas proposé pour les apps mobiles ou les apps avec du code source non géré.
</Tip>

## Les changements se sauvegardent automatiquement

Un appel [`sandbox write`](/developers/references/cli/commands/sandbox-write) ou [`sandbox edit`](/developers/references/cli/commands/sandbox-edit) commit le changement pour vous dans la même requête, avant que la commande ne retourne, donc il n'y a pas d'étape séparée de sauvegarde, déploiement ou push. Un changement de fichier fait via [`sandbox run`](/developers/references/cli/commands/sandbox-run), comme `rm` ou `mv`, commit quelques secondes plus tard, une fois qu'une courte fenêtre de debounce se ferme. Si vous écrivez ou éditez à nouveau avant qu'un commit debounced précédent ne soit arrivé, le nouvel appel attend celui-ci et échoue avec `COMMIT_FLUSH_PENDING` s'il ne peut pas confirmer que ce commit s'est terminé à temps. Une fois qu'un commit arrive :

* Le changement est visible dans l'éditeur d'app Base44.
* Il est sûr même si l'environnement de calcul du sandbox est recyclé après être resté inactif, car un nouveau part toujours de votre dernier commit plutôt que d'un snapshot plus ancien.
* Il est inclus la prochaine fois que vous publiez l'app.

Les ressources structurées se synchronisent de la même façon : contrairement à un projet local, où vous exécuteriez [`entities push`](/developers/references/cli/commands/entities-push) ou [`functions deploy`](/developers/references/cli/commands/functions-deploy) après avoir ajouté un fichier, créer `base44/functions/send-email/entry.ts` dans le sandbox suffit à ajouter cette fonction.

<Warning>
  * N'exécutez pas [`deploy`](/developers/references/cli/commands/deploy), [`functions deploy`](/developers/references/cli/commands/functions-deploy), [`entities push`](/developers/references/cli/commands/entities-push) ou les autres commandes push contre une app que vous éditez dans son sandbox. Ces commandes synchronisent un projet local vers Base44, et il n'y a pas de projet local en travaillant avec un sandbox.
  * Si votre dernière action était une commande shell exécutée via `sandbox run` plutôt qu'un appel `write` ou `edit`, son commit est encore un instant en retard. Attendez quelques secondes avant de vous déconnecter.
</Warning>

## Points de restauration

Un point de restauration est un point dans l'historique de version de l'app, ancré à un commit spécifique. Créez-en un avec [`sandbox checkpoint`](/developers/references/cli/commands/sandbox-checkpoint) pour marquer un état sain connu, puis restaurez-le depuis l'éditeur d'app si un changement ultérieur tourne mal. Les changements en attente sont commités avant que le point de restauration ne soit pris, donc il capture toujours votre dernier code.

## Travailler en parallèle de l'éditeur d'app

Votre agent de codage et l'éditeur d'app Base44 peuvent travailler sur la même app en même temps. Il n'y a pas de verrou à acquérir et pas de session à libérer. Les changements des deux côtés arrivent au même endroit, donc traitez ça comme un collègue qui édite le même projet.

<Warning>
  Il n'y a pas d'étape de fusion. Si votre agent de codage et l'éditeur d'app changent le même fichier en même temps, l'écriture qui arrive en dernier gagne, et le changement précédent est perdu. Évitez que les deux côtés touchent le même fichier dans la même session de travail.
</Warning>

## Permissions

Deux vérifications séparées contrôlent l'accès au sandbox : si vous pouvez accéder à cette app du tout, et si votre session actuelle a reçu un accès en écriture.

### Accès à l'app

Vous avez besoin d'un accès admin à l'app elle-même, soit comme admin de workspace, soit comme collaborateur sur cette app spécifique. L'accès est vérifié à chaque appel, donc un changement de votre rôle dans le workspace prend effet immédiatement.

Un simple visualiseur de workspace ne peut pas atteindre le sandbox du tout. L'unique exception est un visualiseur qui a aussi un rôle éditeur par app hérité d'avant que votre workspace passe à l'accès basé sur les rôles. Cette combinaison peut toujours lire depuis le sandbox, mais rien changer. Les superagents ne prennent pas en charge les commandes sandbox.

### Portée de la session

Au-delà de l'accès à l'app, lire et modifier le sandbox nécessitent des permissions différentes sur votre session :

| Commandes                                                            | Permission nécessaire            |
| -------------------------------------------------------------------- | -------------------------------- |
| `sandbox ls`, `sandbox read`, `sandbox grep`                         | `apps:read`, accordée par défaut |
| `sandbox write`, `sandbox edit`, `sandbox run`, `sandbox checkpoint` | `sandbox:write`                  |

Les permissions de votre session sont fixées à sa création et ne peuvent pas être élargies plus tard. La CLI demande `sandbox:write` lors de `base44 login`, et via MCP vous l'accordez à l'étape de consentement OAuth. Renouveler une session existante ne l'ajoute pas.

Donc si les commandes de lecture fonctionnent mais que celles de modification échouent avec `NOT_AUTHORIZED`, vous êtes sur une session qui n'a jamais eu `sandbox:write`. Exécutez [`base44 login`](/developers/references/cli/commands/login) à nouveau, ou reconnectez le serveur MCP et approuvez l'accès au sandbox, pour démarrer une session qui l'a.

## Limites et garde-fous

Les commandes de fichier sont confinées à la racine de l'app. Les chemins absolus et les chemins qui remontent au-dessus de la racine sont rejetés avec `PATH_OUTSIDE_SANDBOX`. Les répertoires `.agents` et `.git` ne sont pas accessibles via les commandes de fichier, et échouent avec `PROTECTED_PATH`, car ils contiennent les secrets et les identifiants de dépôt de votre app. L'unique exception est `.agents/skills`, que vous pouvez lire et écrire pour que votre agent puisse travailler avec les [skills](/developers/backend/overview/skills) installés sur l'app.

Sur l'ensemble de la fonctionnalité, vous êtes plafonné à 120 requêtes de lecture, 60 requêtes de modification et 30 commandes run par minute, par app. Dépasser l'une de ces limites échoue avec `RATE_LIMITED`. La page de référence de chaque commande couvre ses propres limites de taille et de nombre, comme combien de chemins `sandbox read` accepte ou quelle taille de fichier `sandbox write` permet.

## Voir aussi

* [Serveur MCP Base44](/developers/backend/overview/mcp-server) : Connectez un assistant IA à votre compte Base44
* [Aperçu de la CLI](/developers/references/cli/get-started/overview) : Installez et utilisez la CLI Base44
* [Structure de projet](/developers/backend/overview/project-structure) : Comment les fichiers de projet Base44 sont organisés
* [Développement local](/developers/backend/overview/local-dev/local-development-overview) : Exécutez un projet Base44 sur votre propre machine à la place
* [Skills](/developers/backend/overview/skills) : Apprenez aux agents IA de codage à travailler avec Base44
* [`connectors initiate`](/developers/references/cli/commands/connectors-initiate) : Configurez un connecteur sur une app sans sandbox ni projet local

<Note>Cette page a été traduite par IA. Pour les informations les plus précises et à jour, consultez la [version anglaise](/). </Note>
