Ce qu’OAR expose, et ce qu’il n’expose pas
Cette page rassemble, en un seul endroit, ce qu’OAR expose et ce qu’il n’expose pas. Chaque fait a sa place sur une autre page ; chaque section se termine par un lien vers elle. La version courte : un relais agit en votre nom, le token d’accès en donne le contrôle total, et quelques liens que vous créez sont publics à dessein.
Le modèle de confiance #
Un relais tourne sous un utilisateur du système d’exploitation, et ses agents tournent sous cet utilisateur avec les droits de cet utilisateur. Tout ce que vous pouvez faire sur la machine, on peut demander à un agent de le faire. Rien ne confine le shell d’un agent. Un agent peut lire le fichier de config (et avec lui le token d’accès), la base de données (avec les clés des fournisseurs et les tokens des relais associés) et les fichiers de connexion des fournisseurs. Le token d’accès donne le contrôle total du relais, et donc de ce que ses agents peuvent faire : qui le détient peut faire exécuter des commandes sur l’hôte par un agent. OAR étend la portée de ces agents. Il n’ajoute aucun bac à sable.
La seule exception est Claude Cloud, dont l’agent travaille sur un clone d’un dépôt GitHub dans un bac à sable chez Anthropic, pas sur votre machine (voir Ce qui quitte votre machine).
Ce qu’un agent peut toucher #
Le dossier de travail est l’endroit où un agent travaille. Ce n’est pas un mur. Voici ce qu’OAR impose et ce qu’il n’impose pas :
| OAR impose | OAR n’impose pas |
|---|---|
workspace limite les dossiers dans lesquels une conversation peut être démarrée, et vers lesquels elle peut être déplacée avec Change CWD (Changer le dossier de travail). Non définie, tout dossier existant est autorisé. |
Rien ne confine le shell d’un agent au dossier de travail. Il peut lire et écrire partout où l’utilisateur du relais le peut. |
| Les modes du relais indiquent à l’agent avec quelle liberté agir. Certains fournisseurs en imposent une partie : le moteur SDK de GitHub Copilot et OpenAI refuse tout ce qui n’est pas en lecture seule en plan et vous demande d’abord en ask. | Claude et Ajouté en 0.9.17 DeepSeek exécutent chaque outil sans vous demander, dans tous les modes. Les demandes de permission de Grok sont toutes approuvées. Sur le moteur d’extension, OAR ne vérifie aucune permission. Un mode y est une consigne que l’agent suit. |
| Un aperçu statique ne peut servir qu’un dossier situé dans le dossier de travail. | La liste d’autorisation ne vérifie pas le dossier Default (Par défaut), et elle ne limite pas ce que vous pouvez parcourir. |
Détails : Limiter où les chats peuvent démarrer, Modes du relais et Les agents et le token.
Joignable sans connexion #
Tout ce qui lit ou modifie vos conversations, fichiers, réglages ou agents demande le token d’accès. Voici les exceptions :
| Quoi | Ce que cela expose | Comment le désactiver |
|---|---|---|
| La page de connexion et l’app statique | L’app web et sa boîte de connexion. Elle ne contient aucune de vos données. | Ce n’est pas désactivable. Gardez le relais hors d’internet (localhost) ou placez des règles d’accès devant. |
Un lien de partage (/) |
Le fil de la conversation, en lecture seule, avec le modèle de chaque message. Les chemins de l’hôte du relais sont filtrés (noms de fichiers seulement, par défaut), et les messages que vous avez masqués ne sont pas envoyés. Chaque ouverture est journalisée. | Stop sharing (Arrêter le partage) ou Renew link (Renouveler le lien) dans Settings → Sharing (Réglages → Partage), ou supprimez la conversation. L’ancienne adresse répond alors un simple 404. Un lien n’expire jamais. |
| Un lien d’aperçu | Le serveur de dev ou le dossier en aperçu. Le token aléatoire du lien est sa seule protection. | Close (Fermer) sur l’aperçu, ou /. La lane est désactivée tant que vous ne la configurez pas. Un aperçu survit à un redémarrage du relais, et prend fin quand vous le fermez ou supprimez sa conversation. |
Une application Cloudflare Access devant le relais arrête aussi les lecteurs d’un
lien de partage, sauf si / et / sont laissés passer, ce qui rend
ces deux chemins publics à dessein
(Cloudflare Access).
Détails : Vos liens partagés, ce que voit un lecteur, Aperçus et Ce qui demande le token.
Ce qu’un navigateur connecté peut joindre #
Un navigateur qui détient le token peut ouvrir chaque conversation du relais, et il dispose de l’explorateur de fichiers. Sous Linux et macOS, la racine des lecteurs sert tout fichier que l’utilisateur du relais peut lire, dans le dossier de travail ou non. Renommer et supprimer agissent partout où cet utilisateur peut écrire, et une suppression ne passe pas par une corbeille. Sous Windows, l’explorateur est limité aux lecteurs que le relais liste. La route média qui affiche les images d’un agent fonctionne de la même façon : elle sert tout chemin absolu que l’utilisateur du relais peut lire, mais seulement à une requête qui porte le token.
Détails : L’explorateur de fichiers, Images et médias.
Secrets #
| Secret | Où il se trouve |
|---|---|
| Le token d’accès | config., en texte clair. Le relais garde le fichier lisible par son propriétaire seul. Un navigateur le détient aussi, sous forme de cookie de connexion. |
| Un token de tunnel Cloudflare | config. (cloudflared) ou l’environnement. |
| Les clés d’API OpenAI, Cursor, Ajouté en 0.9.17 DeepSeek et Ajouté en 0.9.18 Claude API | La base de données. Elles ne sont jamais envoyées aux navigateurs. Chacune n’atteint que les workers de son propre fournisseur ; la clé DeepSeek ne quitte la machine que vers l’URL de base de DeepSeek, la clé Claude API seulement vers https://. |
| Le token d’un relais associé | La base de données. Il n’est jamais envoyé aux navigateurs ni aux agents. |
| Les tokens des liens de partage, les clés push | La base de données. |
| Les connexions Claude, Grok et GitHub Copilot | Les propres dossiers des fournisseurs sur la machine (~/., ~/., la connexion de la CLI Copilot). OAR n’en stocke aucune. Les chats DeepSeek n’en utilisent aucune. Ajouté en 0.9.18 Les chats Claude API partagent le dossier Claude mais tournent sur la clé enregistrée, pas sur la connexion. |
Un token de connexion Claude dans l’environnement du relais (CLAUDE_) |
Ajouté en 0.9.17 Transmis uniquement aux workers Claude et Claude Cloud, sur toutes les plateformes. Avant, d’autres workers pouvaient le recevoir aussi. |
Une clé ou un token Anthropic dans l’environnement du relais (ANTHROPIC_, ANTHROPIC_) |
Ajouté en 0.9.17 Transmis à aucun worker. Avant, chaque worker le recevait, et un chat Claude tournait dessus au lieu de la connexion Claude. Ajouté en 0.9.18 Un chat Claude sur l’abonnement qui démarre sur une clé d’API venant des propres réglages de Claude Code est arrêté lui aussi ; voir Claude. |
Les agents tournent sous le même utilisateur que le relais. Les modes de fichier « propriétaire seul »
n’empêchent donc pas un agent d’entrer : il peut lire config., la base de données
et les dossiers des fournisseurs. Rien dans OAR ne les lui cache. Les propres
workers du relais et les outils dont les agents se servent pour joindre le relais lisent le token d’accès
dans config.. relay_ ne donne jamais à un agent le token d’un autre
relais : l’appel passe par votre relais, qui ajoute le token. Un agent pourrait
quand même lire ce token dans la base de données. Une sauvegarde de la base de données contient les clés et tokens ci-dessus ; gardez-la
donc aussi privée que le dossier d’état.
Ajouté en 0.9.17 L’agent d’un chat DeepSeek peut lire la clé DeepSeek dans son
environnement. Le relais remplace la clé par [redacted] dans tout ce qu’un
worker de session publie avant qu’il le stocke ou l’affiche, ce qui la tient hors du
fil de la conversation, mais cela n’arrête pas un agent qui veut la clé. Voir Où
la clé est conservée.
Ajouté en 0.9.18 Il en va de même pour la clé Claude API dans un chat Claude API. Ce chat partage le dossier Claude où se trouve votre connexion Claude ; le relais impose donc la clé enregistrée par-dessus tout identifiant de ses réglages et arrête un turn dont Claude Code signale une autre source pour sa clé. Claude Code envoie sa première requête au modèle un instant après ce signalement ; une requête au modèle peut donc déjà être partie avec l’autre identifiant avant l’arrêt : la vérification limite un mauvais identifiant à cette seule requête au modèle, elle ne l’empêche pas. Voir Claude API → Sécurité.
Ajouté en 0.9.18 Dans les chats DeepSeek et Claude API, qui tournent sur une clé que le relais détient, Claude Code démarre avec tous les hooks et la ligne d’état désactivés, les vôtres comme ceux du dossier du chat, pour qu’ils ne puissent pas tourner avec la clé dans leur environnement. Les hooks des réglages gérés tournent quand même. Les chats sur votre connexion Claude gardent les leurs.
Ajouté en 0.9.17 Un relais démarré depuis une session Claude Code (le shell d’un agent, par exemple) ne transmet plus à ses workers les variables de cette session, dont son id de session, son socket de messagerie et son token. Voir Un relais démarré depuis Claude Code.
Détails : Où se trouvent les secrets, Les variables qui atteignent les workers des agents.
Entre relais #
L’association peut transmettre un token : si l’autre relais a besoin d’un autre token pour rappeler le vôtre, la présentation porte le vôtre, et retirer l’association ne le révoque pas. Le niveau Agents may (Les agents peuvent) et Accept prompts from other relays' agents (Accepter les prompts des agents d’autres relais) limitent ce que les agents font par l’outil, pas ce qu’un détenteur du token fait directement. Les niveaux sont Read only (Lecture seule), Read and prompt (Lecture et prompts) et Full (Accès complet) ; les nouvelles associations démarrent à Full. Un relais associé est verrouillé dans une conversation tant que vous ne le mentionnez pas. Un prompt qui a traversé deux relais n’est pas transmis à un troisième, et après 30 prompts sans message de votre part, le suivant vous demande votre accord sur une carte.
Détails : Relais distants et association.
Entre agents d’un même relais #
Les sessions d’agent sont désactivées par défaut. Quand vous les activez, un agent doit vous demander avant de démarrer sa première session dans une conversation, au plus 4 de ses sessions peuvent travailler en même temps, et une session qu’un agent a démarrée ne peut pas démarrer elle-même de sessions. Dans les modes ask et plan, chaque action d’écriture demande d’abord.
Répondez aux cartes d’approbation avec leurs boutons. Sur les cartes d’approbation propres à OAR, seul
le mot Allow approuve, quelle que soit la casse. Tout autre texte saisi refuse, et
l’agent n’en reçoit aucune raison.
Détails : Sessions d’agent et Cartes d’approbation.
Réseau #
- Qui peut se connecter.
localhostvautOnly truepar défaut et lie le relais à127.. Toute autre valeur le lie à toutes les interfaces, et le relais ne vérifie pas d’où vient une requête. L’accès LAN est en0. 0. 1 httpsimple ; le token traverse donc votre réseau sans chiffrement (Qui peut se connecter). - Tunnels. Au-delà de votre réseau, utilisez HTTPS par un tunnel ou un proxy : Tunnel SSH, Cloudflare Tunnel, Proxy inverse.
- Connexion. Ajouté en 0.9.11 Dix tokens erronés depuis une même adresse en une
minute bloquent cette adresse pour le reste de la minute (
429), et le refus est journalisé. Les requêtes venant de la machine même du relais que rien n’a transmises ne sont jamais bloquées. Le blocage ralentit les tentatives de devinette ; un token long et aléatoire reste la protection. Le cookie est HttpOnly et dure 30 jours (Les protections). - Un token dans une adresse.
?token=ne fonctionne que sur l’adresse de la page ; la page se connecte avec un en-tête et le retire. Cette première adresse peut quand même finir dans l’historique du navigateur et dans les journaux d’un proxy ou d’un tunnel (Les façons de le présenter). - La connexion en direct. Ajouté en 0.9.11 Elle n’accepte un navigateur que depuis
l’origine propre du relais ; une page d’un autre site ne peut donc pas s’y glisser avec votre cookie
de connexion. Derrière un proxy qui réécrit l’en-tête
Host, listez l’origine publique dansallowed.Origins - En-têtes transmis. Ajouté en 0.9.11
X-,Forwarded- For X-,Forwarded- Host X-etForwarded- Proto X-ne comptent que venant d’un proxy auquel le relais fait confiance viaReal- IP trust, par défaut un proxy en bouclage. L’adresse client (blocage, limites de débit, journal d’accès du partage) ainsi que l’hôte et le schéma des nouveaux liens de partage sont lus par ce biais ; un client direct ne peut donc pas les choisir.Proxy - Redémarrage et vidage de la queue. Le redémarrage, l’annulation d’un redémarrage et Empty queue (Vider la file) ne demandent que le token, depuis n’importe quel appareil. Si des utilisateurs distants ne doivent pas s’en servir, refusez-les au niveau du proxy (Les points d’accès réservés à la machine du relais).
- Le garde-fou des chemins du worker de session. Le chemin qu’utilisent les workers de vos agents, ainsi que
l’exécution des opérations d’image, ne répondent qu’à un pair en bouclage dont la requête
ne porte aucun marqueur de tunnel (
cf-, ou l’un de ceux deray tunnel) niMarker Headers X-,Forwarded- For ForwardedouX-. Un intermédiaire qui n’ajoute aucun de ces en-têtes, comme un tunnel SSH inverse, paraît local ; seul le token protège alors le chemin (garde-fou des chemins).Real- IP - Le token du tunnel Cloudflare. Il est passé à
cloudflaredsur la ligne de commande ; les autres utilisateurs de la machine peuvent donc le voir dans la liste des processus (Cloudflare Tunnel). - Nettoyage du tunnel SSH.
auto(activé par défaut) met fin au processus de votre connexion SSH qui occupe le port distant ;Reclaim Port reclaimmet aussi fin à vos sessions SSH inactives là-bas (port distant occupé).Stale Ssh Sessions
Ce qui quitte votre machine #
OAR n’a pas de télémétrie. Le relais n’envoie aucune donnée d’utilisation à OAR ni à personne d’autre. Il contacte ces hôtes, et seulement pour ces raisons :
- oar.sh, seulement si vous l’acceptez. Check for updates automatically (Rechercher automatiquement les mises à jour) dans
Settings → General (Réglages → Général) est désactivé par défaut. Quand vous l’activez, le relais
interroge
https://tout de suite, à chaque démarrage puis environ toutes les 12 heures. La requête est un simpleoar. sh/ latest. json GETavecAccept: application/et, une fois qu’il y a une réponse,json If-. Elle ne porte aucune information de version, de token, de compte ou de machine. Le bouton Check for updates (Rechercher des mises à jour) etNone- Match oar updatesans--tolisent le même fichier.OAR_dans l’environnement du relais arrête tout cela. Voir La vérification des mises à jour.NO_ UPDATE_ CHECK= 1 - npm, quand vous mettez à jour.
npm install -gparle au registre npm. - Chaque fournisseur, à chaque turn. Vos messages et tout ce que l’agent lit pour la tâche vont au fournisseur derrière la conversation : GitHub Copilot, OpenAI (ou l’URL de base que vous avez réglée), Claude, Claude API, Cursor, Grok ou DeepSeek (ou l’URL de base que vous avez réglée). Leurs conditions s’appliquent, pas celles d’OAR.
- DeepSeek. Ajouté en 0.9.17 Le relais envoie la clé DeepSeek à
https://, ou à l’URL de base réglée sous Advanced (Avancé) dans Settings → Providers → DeepSeek (Réglages → Fournisseurs → DeepSeek) (api. deepseek. com https, ouhttpsur la même machine seulement), et à aucun autre hôte : pour lister les modèles quand vous enregistrez la clé ou l’URL de base ou actualisez la liste dans 🤗 Select Models (Sélectionner des modèles), et pour lire le solde (ci-dessous). Le Claude Code d’un chat DeepSeek envoie ses turns à/sous cette adresse, avec le même contexte de session que n’importe quel chat Claude Code. OAR coupe le trafic propre de Claude Code vers Anthropic (mises à jour, télémétrie). Voir DeepSeek.anthropic - Claude API. Ajouté en 0.9.18 Le relais envoie la clé Claude API à
https://et à aucun autre hôte : pour lister les modèles de la clé quand vous l’enregistrez, activez Claude API ou actualisez la liste. Le Claude Code d’un chat Claude API y envoie ses turns avec la clé. Voir Claude API.api. anthropic. com - Claude Cloud. L’agent tourne chez Anthropic, sur un clone de votre dépôt.
Le relais envoie le token de connexion Claude à
https://et à aucun autre hôte. Voir Claude Cloud.api. anthropic. com - La consommation des forfaits, quand vous ouvrez Check Usage (Vérifier la consommation). Le relais lit vos comptes
avec les connexions qu’il trouve sur la machine : GitHub (
api., avecgithub. com GH_,TOKEN GITHUB_ou la connexion deTOKEN gh), Grok (cli-, avec la connexion de la CLI Grok), Anthropic (avec Claude Cloud activé), Ajouté en 0.9.17 DeepSeek (le solde, à l’URL de base de DeepSeek avec la clé enregistrée, tant que DeepSeek est activé) et, seulement si vous avez saisi un token de session du tableau de bord,chat- proxy. grok. com cursor.. Voir Check Usage.com - GitHub Actions. Pour la vérification avant mise en veille, le relais lance
gh run listpour les dépôts de vos dossiers de travail (Mettre l’hôte en veille). - Relais associés. Ce qu’un agent envoie par
relay_va à l’adresse de ce relais-là, avec son token (Relais distants).tool - Installateurs des fournisseurs, quand vous confirmez. Install (Installer) pour Claude ou Grok
lance le script d’installation propre au fournisseur (
claude.,ai x.) sous l’utilisateur du relais (Claude, Grok).ai - Notifications push. Elles passent par le service push de l’éditeur de votre navigateur, et le texte est générique sauf si vous en décidez autrement (Ce que montre une notification).
C’est votre navigateur, pas le relais, qui charge les bibliothèques Markdown, de maths et de coloration
syntaxique depuis cdn. (Markdown, maths, terminal) et
cdnjs. (coloration syntaxique), chaque fois qu’il ouvre l’app. La
vue terminal d’une session tmux charge sa bibliothèque de terminal depuis unpkg.
quand cdn. échoue. Ces hôtes voient la requête de chaque navigateur
qui ouvre l’app. Voir Images, médias et formules.
Journaux #
Le relais copie sa console dans logs/ dans le dossier d’état,
avec un horodatage par ligne. Il fait une rotation à 5 Mo et garde trois fichiers plus anciens.
Avant d’écrire une ligne, le relais remplace votre token d’accès, et toute valeur
après ?token= ou &token=, par [token]. OAR_ désactive
le fichier. Un seul token erroné n’est pas journalisé ; une adresse bloquée
l’est, avec une ligne commençant par [auth]. Un aperçu est désigné par un hachage court,
jamais par son token. Une lecture d’un partage est journalisée avec l’adresse du lecteur, ou
not stored quand Store viewer IP addresses (Enregistrer les adresses IP des lecteurs) est désactivé.
Les journaux des workers (worker-<session>.) contiennent la sortie de chaque worker de session
et sont écrits par les workers, sans passer par ce masquage. Les fichiers des conversations
supprimées restent. Un proxy inverse ou un tunnel devant le relais tient ses
propres journaux, qui peuvent contenir des adresses avec ?token=, et le tunnel Cloudflare géré
affiche son token sous la forme <redacted>. Considérez tous les journaux comme privés, et lisez-les
avant de les publier où que ce soit.
Détails : Journaux.
Avant d’exposer un relais #
- Gardez le token aléatoire et hors des adresses que vous partagez. S’il a fuité, lancez
oar setup --new-, qui déconnecte tous les appareils et exclut les relais associés.token - Joignez le relais en HTTPS : un tunnel ou un proxy inverse. Gardez
localhostactivé quand le proxy ou le tunnel tourne sur la même machine.Only - Derrière un proxy sur une autre machine, réglez
trustsur lui, etProxy alloweds’il réécritOrigins Host(Un proxy sur une autre machine). Un intermédiaire qui n’ajoute aucun en-tête a besoin d’un en-tête marqueur danstunnel. Si des utilisateurs distants ne doivent pas redémarrer le relais, faites refuser ces points d’accès par le proxy.Marker Headers - Faites tourner le relais sous un utilisateur dont vous confieriez les droits, les fichiers et les connexions aux
agents. Réglez
workspacesi les conversations ne doivent démarrer que dans certains dossiers, et rappelez-vous que cela ne confine pas un shell.Root Allow List - Ne partagez une conversation qu’après l’avoir lue avec Preview as shared (Aperçu tel que partagé), et masquez ce qui ne doit pas y figurer. Le filtrage des chemins reste approximatif dans le texte libre. Arrêtez les liens dont vous n’avez plus besoin dans Settings → Sharing.
- Ne publiez un aperçu que pour quelque chose que vous pouvez montrer à quiconque a le lien, et fermez-le quand vous avez fini. Il survit à un redémarrage du relais.
- Laissez les sessions d’agent désactivées sauf si vous en avez besoin. Pour les relais associés, choisissez le niveau Agents may à dessein et désactivez Accept prompts from other relays' agents là où vous n’en avez pas besoin.
- Cliquez sur les boutons des cartes d’approbation.
- Si vous ne voulez aucun contact avec oar.sh, réglez
OAR_.NO_ UPDATE_ CHECK= 1