Le blog sécurité de FireAI

Par FireAI Security & Research Team · Publié

Sécurité d’opencode sur Mac : surveiller son accès réseau avec FireAI

Sécurité d’opencode sur Mac : surveiller son accès réseau avec FireAI

opencode est un agent de programmation IA open source que l’on exécute depuis un terminal sur Mac, et il fait souvent l’objet de recherches comme « opencode security mac », « is opencode safe » et « opencode network access ». Sa documentation est explicite sur le modèle de permissions et sur l’unique fonctionnalité qui envoie une conversation vers un serveur. Cet article expose ces faits documentés, puis explique comment FireAI, un pare-feu embarqué pour macOS conçu par HisnLabs, surveille les connexions établies par le programme, et ce qu’il ne peut pas faire.

Ce qu’est opencode

opencode se présente comme « the open source AI coding agent ». Le dépôt GitHub, passé de l’organisation sst à anomalyco, est sous licence MIT. Il est distribué sous forme d’interface de terminal, d’application de bureau (indiquée comme bêta dans le README) et d’extension d’IDE, et comprend deux agents intégrés : build, un agent disposant d’un accès complet et activé par défaut, et plan, un agent en lecture seule qui demande l’autorisation [1]. Les utilisateurs le relient à des fournisseurs de modèles au moyen de clés d’API ; l’introduction recommande OpenCode Zen, une sélection de modèles testés par l’équipe d’opencode [2].

Comment opencode s’exécute sur macOS

Le README présente plusieurs manières de l’installer sur macOS : le script curl -fsSL https://opencode.ai/install | bash, npm, bun, pnpm ou yarn, Homebrew, et un DMG pour l’application de bureau. Pour une installation en ligne de commande, le programme lancé s’appelle opencode, et c’est sous ce nom que le processus apparaît au système.

Ce à quoi il peut accéder et comment il est encadré

Le système de permissions comporte trois états : allow, ask et deny. Les règles peuvent être définies globalement ou par outil, et peuvent porter sur des motifs de l’entrée de l’outil, la dernière règle correspondante l’emportant. La documentation indique que la plupart des permissions valent allow par défaut ; doom_loop et external_directory valent ask par défaut, et les fichiers .env sont bloqués par défaut. L’option --auto approuve automatiquement les demandes, sauf si une règle deny explicite s’applique [3].

La permission external_directory régit les chemins situés hors de l’espace de travail du projet. Ces permissions encadrent ce que l’agent fait avec ses outils, comme lire, modifier et exécuter des commandes. Elles ne sont pas décrites comme une liste d’autorisation réseau.

Où il se connecte

La page consacrée au partage documente l’unique fonctionnalité qui envoie une conversation vers les serveurs d’opencode. La commande /share crée une URL publique et y synchronise l’historique de la conversation, les messages, les réponses et les métadonnées de session. Le partage est manuel par défaut, de sorte que rien n’est envoyé sans cette commande ; il peut être désactivé avec "share": "disabled" dans opencode.json, et les sessions partagées restent accessibles jusqu’à l’utilisation de /unshare [4]. Les pages consultées pour cet article ne mentionnent pas d’autres domaines : au-delà de votre fournisseur de modèle et de ce que contacte un outil, considérez les autres destinations comme non documentées ici.

Surveiller opencode avec FireAI

FireAI est un pare-feu pour macOS qui s’exécute sur le Mac. Sa fonctionnalité Profil d’agent reconnaît 19 agents IA, apprend où chacun se connecte habituellement et signale ce qui est nouveau. La page Profil d’agent de FireAI range opencode parmi les agents en ligne de commande reconnus au nom de leur programme. Les connexions établies par un programme nommé opencode et par ses processus enfants, comme un shell ou git, sont donc attribuées à opencode.

  • Pendant les 3 premiers jours, FireAI apprend les destinations que l’agent contacte habituellement, regroupées par domaine : api.anthropic.com devient ainsi anthropic.com. Rien n’est signalé pendant cette période.
  • Ensuite, toute destination jamais contactée et située hors de la base de référence est signalée pour examen dans Suggestions, dans la carte Agents IA et dans la Revue rapide. Glissez vers la gauche pour bloquer, ou vers la droite pour « C’est bon ».
  • Un pic d’envoi est également signalé : une heure au cours de laquelle l’agent a envoyé au moins 4 fois le volume de son heure la plus chargée jusque-là, et jamais moins de 25 Mo.
  • FireAI n’utilise que des métadonnées, à savoir les noms d’hôte et les volumes en octets. Il ne lit jamais le contenu d’une connexion.

Configurer FireAI pour opencode

  1. Installez FireAI et utilisez l’agent comme d’habitude. La période d’apprentissage de 3 jours démarre d’elle-même et ne signale rien.
  2. Ouvrez Suggestions et repérez la carte Agents IA. Après la période d’apprentissage, un signalement concernant l’agent y apparaît, ainsi que dans la Revue rapide.
  3. Examinez chaque signalement. Choisissez Bloquer pour créer une règle visant le processus qui s’est connecté, ou « C’est bon » pour ajouter la destination à la base de référence de l’agent.
  4. Pour cantonner l’agent aux destinations qu’il utilise déjà, choisissez Profil d’agent dans le menu des modes de sécurité, à côté de Maison, Café, Parano et Sous attaque. Vos règles s’appliquent comme en mode Maison, et une connexion vers une destination hors de la base de référence est bloquée au lieu d’être signalée une fois l’apprentissage de l’agent terminé.
  5. Une destination bloquée apparaît dans la carte Agents IA avec Autoriser et Garder bloqué. Autoriser l’ajoute à la base de référence et l’agent peut l’atteindre immédiatement. Garder bloqué crée une règle de blocage valable dans tous les modes.

Une règle d’autorisation que vous avez créée pour un site web, un domaine ou une adresse reste prioritaire, et le DNS comme votre réseau local ne sont jamais bloqués. Pour un agent que FireAI ne liste pas, créez manuellement une règle pour son programme dans les règles par app. Le mode Profil d’agent nécessite FireAI 1.0.3 ou une version ultérieure, et la reconnaissance d’opencode la version 1.0.4.

Limites

  • Les règles de permission d’opencode déterminent quels appels d’outils sont approuvés et, en mode --auto, elles en approuvent la plupart. FireAI agit quant à lui au niveau des connexions : les deux se complètent plutôt qu’ils ne se recoupent.
  • opencode est reconnu au nom de son programme : il est donc étiqueté, non vérifié. Seuls Claude Code, Claude et Cursor sont contrôlés par rapport à la signature de leur éditeur.
  • FireAI n’empêche pas l’injection de prompt. Il en limite les conséquences en signalant, et en vous permettant de bloquer, le chemin par lequel les données quitteraient votre Mac.
  • FireAI ne voit ni les prompts, ni le contenu des outils MCP, ni les accès aux fichiers, ni les skills. TLS masque le contenu, et FireAI ne se trouve pas à l’intérieur de l’agent.
  • Les processus enfants qui se terminent très rapidement peuvent échapper à la détection, et ils sont identifiés par leur chemin, non par leur signature.
  • Pendant la période d’apprentissage de 3 jours, rien n’est signalé, et les pics d’envoi sont signalés, non bloqués.
  • En mode Profil d’agent, une connexion vers une adresse IP nue, sans nom d’hôte, est identifiée par son adresse : une nouvelle adresse pour un service que l’agent utilise habituellement est donc bloquée jusqu’à ce que vous l’autorisiez.

Autres agents

La même approche s’applique à tous les agents que FireAI reconnaît. Voir les autres guides : Claude Code, l’application de bureau Claude, Cursor, l’application ChatGPT pour Mac, OpenAI Codex CLI, OpenClaw, Hermes Agent, Gemini CLI, GitHub Copilot CLI, Amp, Qwen Code, Aider, Goose, Crush, Windsurf, Kiro, Trae, Muse de Meta, tout autre agent IA exécuté par python ou node. La description complète de la fonctionnalité figure sur la page de documentation du Profil d’agent, publiée par HisnLabs.

Le rôle de FireAI et de HisnLabs

FireAI apprend où opencode se connecte habituellement sur votre Mac et signale toute destination inédite ou tout pic d’envoi, sans lire vos données.

FireAI est le produit de HisnLabs : un pare-feu IA embarqué pour Mac. Il montre en langage clair chaque connexion faite par vos applications et vous laisse décider ce qui sort de votre Mac — son IA fonctionne en local, votre trafic ne nous est jamais envoyé, ni à personne d’autre. L’équipe de recherche en sécurité de HisnLabs est celle qui garde ces décisions fiables : elle recense les domaines de simple télémétrie face à ceux d’un vrai service, suit le pays et le réseau derrière une connexion, et entraîne le modèle embarqué (la fonction FireAI Pilot) sur du trafic réel, sans que rien ne quitte votre Mac.

Vous pouvez lire les choix techniques qui s’y trouvent, ou essayer FireAI pendant 17 jours, sur FireAI, par HisnLabs.

Sources