Intégration IA (MCP)

Interrogez directement des assistants IA comme Claude sur l'état de sécurité de votre Mac / Linux

RoamSwitch intègre un serveur MCP (Model Context Protocol) en lecture seule. Connectez-le à un client MCP et posez simplement, en langage naturel, des questions comme « mon Mac / Linux est-il sécurisé en ce moment ? » ou « quels ports sont exposés ? » — vous obtiendrez des réponses fondées sur les diagnostics précis de RoamSwitch lui-même, et non sur des suppositions. Il ne peut ni changer le niveau de verrouillage, ni isoler des ports, ni effectuer aucune autre action ; la communication avec votre client IA reste entièrement sur l'appareil via stdio (une extension de notre politique Zero Telemetry).

🔒 Pourquoi c'est sûr

  • Lecture seule : uniquement des diagnostics de sécurité, une surveillance des ports et des vérifications de l'état des gardes. Aucun outil d'action tel que le basculement du verrouillage, l'isolement de ports ou l'éjection d'appareils n'est implémenté.
  • Entièrement local : la communication avec votre client IA (Claude Desktop/Code, etc.) passe uniquement par stdio et reste entre le client et le processus RoamSwitch sur votre Mac / Linux. Aucune télémétrie n'est jamais envoyée. Seules des fonctions optionnelles, désactivées par défaut, utilisent le réseau : la vérification de vulnérabilités qui n'examine que votre propre machine (127.0.0.1) et la vérification des signatures npm, qui interroge le registre npm.
  • Prévention des erreurs : en l'absence d'outils d'action, il n'y a aucun risque qu'une injection de prompt ou autre modifie accidentellement votre pare-feu ou vos paramètres réseau.
Configuration

Configuration en deux étapes

1Emplacement du binaire

Intégré à RoamSwitch.app — aucun téléchargement ni installation séparée n'est nécessaire.

/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer

2aPour Claude Desktop

Ajoutez ce qui suit à "mcpServers" dans ~/Library/Application Support/Claude/claude_desktop_config.json, puis redémarrez Claude Desktop.

{
  "mcpServers": {
    "roamswitch": {
      "command": "/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"
    }
  }
}

2bPour Claude Code

Il suffit d'exécuter une seule fois la commande suivante dans le terminal.

claude mcp add roamswitch /Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer

2cPour OpenAI Codex CLI

Ajoutez ce qui suit à ~/.codex/config.toml, ou exécutez la commande ci-dessous dans le terminal.

[mcp_servers.roamswitch]
command = "/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"
codex mcp add roamswitch -- /Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer

2dPour OpenCode

Ajoutez ce qui suit à opencode.json à la racine du projet (ou dans ~/.config/opencode/opencode.json).

{
  "mcp": {
    "roamswitch": {
      "type": "local",
      "command": ["/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"]
    }
  }
}

💡 Support des LLM locaux : Associé à des modèles locaux via Ollama ou LM Studio, vous pouvez interroger RoamSwitch hors ligne, même si le réseau a été coupé en urgence face à une menace.

2ePour Antigravity

Ajoutez ce qui suit à ~/.gemini/config/mcp_config.json (ou .agents/mcp_config.json à la racine de votre espace de travail).

{
  "mcpServers": {
    "roamswitch": {
      "command": "/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"
    }
  }
}

* Remarque : Si vous rencontrez une erreur Hook Failure ou de télémétrie dans Antigravity CLI (agy), désactivez le hook en définissant "enabled": false dans ~/.gemini/config/plugins/.../hooks.json.

1Emplacement du binaire

Inclus dans le paquet apt / rpm / AUR et installé automatiquement sous /usr/bin/roamswitch-mcp. Aucun téléchargement ni compilation séparés requis (identique pour l'édition Client et l'édition Serveur).

/usr/bin/roamswitch-mcp

Le même binaire et la même procédure de configuration fonctionnent tels quels avec l'édition Serveur (sans interface graphique). Voir le chapitre « Agents IA / Intégration MCP » du manuel d'exploitation Linux Server pour plus de détails.

2aPour Claude Desktop

Claude Desktop n'a pas de version Linux officielle. Si vous utilisez une version non officielle (par ex. claude-desktop-debian), ajoutez ce qui suit à "mcpServers" dans ~/.config/Claude/claude_desktop_config.json, puis redémarrez l'application.

{
  "mcpServers": {
    "roamswitch": {
      "command": "/usr/bin/roamswitch-mcp"
    }
  }
}

2bPour Claude Code

Il suffit d'exécuter une seule fois la commande suivante dans le terminal.

claude mcp add roamswitch /usr/bin/roamswitch-mcp

2cPour OpenAI Codex CLI

Ajoutez ce qui suit à ~/.codex/config.toml, ou exécutez la commande ci-dessous dans le terminal.

[mcp_servers.roamswitch]
command = "/usr/bin/roamswitch-mcp"
codex mcp add roamswitch -- /usr/bin/roamswitch-mcp

2dPour OpenCode

Ajoutez ce qui suit à opencode.json à la racine du projet (ou dans ~/.config/opencode/opencode.json).

{
  "mcp": {
    "roamswitch": {
      "type": "local",
      "command": ["/usr/bin/roamswitch-mcp"]
    }
  }
}

💡 Support des LLM locaux : Associé à des modèles locaux via Ollama ou LM Studio, vous pouvez interroger RoamSwitch hors ligne, même si le réseau a été coupé en urgence face à une menace.

2ePour Antigravity

Ajoutez ce qui suit à ~/.gemini/config/mcp_config.json (ou .agents/mcp_config.json à la racine de votre espace de travail).

{
  "mcpServers": {
    "roamswitch": {
      "command": "/usr/bin/roamswitch-mcp"
    }
  }
}

* Remarque : Si vous rencontrez une erreur Hook Failure ou de télémétrie dans Antigravity CLI (agy), désactivez le hook en définissant "enabled": false dans ~/.gemini/config/plugins/.../hooks.json.

Outils disponibles

Outils en lecture seule (actuellement 33 sur Mac / 38 sous Linux, en augmentation continue)

get_security_report

Effectue un audit en 18 points sur Mac (FileVault, SIP, Gatekeeper, pare-feu, robustesse du chiffrement Wi-Fi, usurpation ARP, ports exposés, etc.) ou en 27 points côté client / 34 points côté serveur sous Linux (durcissement du noyau, protection du socket Docker et des conteneurs privilégiés, isolation du runtime de conteneurs, vulnérabilités connues, etc.), et renvoie un score ainsi que des recommandations correctives.

get_exposed_ports

Répertorie tous les ports actuellement en écoute et, pour ceux exposés à l'extérieur, renvoie un audit détaillé incluant la détection de services à risque connus (Redis, MongoDB, etc.). Sur Mac, il envoie un HTTP GET par port exposé vers 127.0.0.1 pour vérifier les en-têtes.

get_guard_status

Renvoie l'état de la protection des ports, du confinement ARP, de la protection USB, Bluetooth, Web/Mail et DNS, ainsi que le niveau de sécurité.

audit_url_safety

Analyse les liens d'e-mails ou URLs web pour détecter le phishing, les attaques homographes Unicode, les sous-domaines trompeurs et TLDs à risque (Zero Telemetry).

get_app_help

Recherche dans la base de connaissances officielle de RoamSwitch couvrant toutes les fonctionnalités, alertes, paramètres et dépannages en local pour fournir des explications précises.

audit_security_logs

Agrège les journaux de sécurité récents (Mac : échecs d'authentification sudo, tentatives de force brute SSH, blocages Gatekeeper, détections XProtect, etc. / Linux : échecs d'authentification sudo, force brute SSH, blocages pare-feu, refus AppArmor, détections ClamAV, etc.), masque automatiquement les informations sensibles telles que les clés API et jetons, et renvoie également les résultats de la détection de nouveaux motifs (par gabarits de logs) et des anomalies de fréquence (pics statistiques). Sous Linux, si le journal n'a pas pu être lu (par exemple après un délai dépassé), les zéros du décompte ne signifient pas qu'il ne s'est rien passé ; journalReadComplete passe à false et journalError donne la raison.

get_notification_history

Renvoie l'historique des notifications envoyées par RoamSwitch (anomalies d'audit des journaux de sécurité, détections ClickFix, etc.) des 7 derniers jours, les plus récentes en premier.

roamswitch://docs/* (MCP Resources)

Ressources de documentation officielles que les clients IA peuvent intégrer directement dans leur contexte (fonctionnalités, alertes, paramètres, dépannage).

Autres outils en lecture seule

Outil Plateforme Description
audit_secrets Mac / Linux Détecte les clés d'API et les clés privées exposées dans un texte, un fichier ou une arborescence (les valeurs trouvées sont masquées en sortie).
run_active_vuln_scan Mac / Linux Vérification active de vulnérabilités, non destructive et limitée à 127.0.0.1. Aucun autre hôte n'est contacté, mais l'outil envoie des requêtes réseau ; il est donc désactivé par défaut et doit être activé (opt-in) dans les réglages.
get_vulnerability_scan_history Mac / Linux Renvoie le dernier résultat enregistré et le nombre de jours écoulés (pass_age) pour chaque sonde enregistrée par run_active_vuln_scan.
verify_security_findings Mac / Linux Réévalue des éléments (checkId) de get_security_report selon l'état actuel et renvoie un verdict par élément, stillPresent (toujours d'actualité), resolved (corrigé, ou sans objet par conception) ou inconclusive (indéterminable), avec un code de motif indépendant de la langue. Il sert à vérifier, après une correction, qu'elle a bien pris effet. Un élément qui n'a pas pu être mesuré, par exemple faute de privilèges, d'assistant privilégié connecté ou d'accès à Docker, n'est jamais déclaré sûr et ressort comme inconclusive. Sans checkIds, tous les éléments sont vérifiés (jusqu'à 50 identifiants sur Mac et 64 sous Linux ; sous Linux, isServer est aussi accepté). Sur Mac, host_firewall, network_stealth_mode, gateway_arp_lock, malware_scanning, dns_threat_guard et usb_zero_trust sont déterminés par les réglages de l'app RoamSwitch. Ils reflètent donc ces réglages et ne constituent pas une nouvelle mesure de l'état réel du système. L'outil est en lecture seule, ne se connecte à aucun hôte externe, ne répare rien et ne modifie aucun réglage. Sous Linux, il n'envoie rien non plus au réseau local et lit seulement la passerelle dans les caches locaux. Sur Mac, pour retrouver l'adresse MAC de la passerelle, il peut envoyer un ping ICMP, normalement un seul (quelques-uns si la MAC reste introuvable), à la passerelle du réseau local.
audit_mcp_configs Mac / Linux Lit les fichiers de configuration MCP des clients IA (Claude Desktop, Claude Code, Cursor, Windsurf, VS Code, Cline, Gemini CLI, ainsi que .mcp.json et fichiers similaires dans les dossiers de projet enregistrés) et signale les réglages risqués. Il détecte les outils approuvés automatiquement sans confirmation à chaque appel (auto_approve), les serveurs http:// en clair sur un hôte autre que loopback, que l'adresse soit dans le champ url ou passée comme argument de lancement, par exemple --server http://… (remote_plain_http), les lancements par des commandes shell ou interpréteur d'une ligne (shell_wrapper), les lanceurs de type npx / uvx / docker run qui récupèrent un paquet ou une image non épinglés (unpinned_package_launcher), docker run avec --privileged ou avec le socket Docker ou le système de fichiers racine montés (container_host_access), les variables d'environnement qui font charger du code supplémentaire au démarrage, comme LD_PRELOAD ou --require dans NODE_OPTIONS (noms insensibles à la casse, valeurs jamais renvoyées ; code_loading_env), les entrées qui pointent vers HexStrike AI, un backend d'outils d'attaque sans authentification (hexstrike), les fichiers de configuration modifiables par le groupe ou les autres (world_writable_config), l'option enableAllProjectMcpServers de Claude Code (auto_trust_project_servers) et un fichier de configuration qui contient à la fois un serveur lisant des textes écrits par d'autres (pages web, mails, discussions, issues) et un serveur pouvant exécuter des commandes ou modifier des fichiers, la combinaison dont l'injection de prompt indirecte a besoin (reconnue par des noms de paquets connus, sans voir le contenu des outils des serveurs ; injection_exposure). L'outil n'a aucun argument, est en lecture seule et n'envoie rien au réseau. Il ne renvoie jamais de valeurs d'environnement ou d'en-tête, d'arguments ni de secrets, seulement des noms de serveurs, le nom de base d'une commande, un hôte d'URL et, pour un simple nom de registre, le nom du paquet ou de l'image. Les fichiers impossibles à analyser sont listés dans unreadableFiles et n'ont pas été audités.
audit_agent_setup Mac / Linux Lit les fichiers d'instructions et les skills donnés aux agents IA (CLAUDE.md, commands, agents et skills sous ~/.claude, ainsi que ~/.codex, ~/.cursor/rules, ~/.gemini, ~/.agents, ~/.openclaw, et CLAUDE.md, AGENTS.md, .cursorrules et équivalents dans les dossiers de projet enregistrés) et le openclaw.json d'OpenClaw, et signale les contenus et réglages risqués. Dans les fichiers d'instructions et de skills, il signale des phrases cachées dans des caractères de balise Unicode invisibles (hidden_tag_characters), des caractères de largeur nulle et de contrôle de direction (invisible_characters), des formulations qui écrasent des instructions antérieures ou cachent quelque chose à l'utilisateur (override_instruction), le téléchargement-exécution comme curl … | sh (remote_script_exec), le décodage-exécution (encoded_payload_exec), des références à des stockages de clés et d'identifiants (credential_access) à côté d'un envoi ou d'un service de dépôt (credential_exfil_shape, exfil_endpoint), la mise en place de mécanismes persistants (persistence_instruction), du code compilé dans un skill (skill_precompiled_code) et des fichiers modifiables par d'autres (agent_file_writable). Tout ce qui se trouve dans un commentaire HTML est évalué plus haut, car une page rendue le masque. Pour OpenClaw, il signale l'authentification désactivée (openclaw_auth_disabled), une écoute joignable depuis le réseau (openclaw_wide_bind), un jeton de moins de 24 caractères (openclaw_weak_token), une origine générique (openclaw_origin_wildcard), des interrupteurs dangerously… activés (openclaw_dangerous_flag), une liste de proxys qui fait confiance à tout le monde (openclaw_broad_trusted_proxy, openclaw_proxy_trust_loosened), une politique de messages privés ou de groupe ouverte à tous (openclaw_open_dm), mDNS en full (openclaw_mdns_full), des constats d'autodiagnostic masqués (openclaw_audit_suppressed) et des permissions trop larges (openclaw_loose_permissions). Chaque règle est déterministe : une correspondance signifie « une personne devrait lire cette ligne », pas « malveillant ». Il ne prend aucun argument, est en lecture seule et n'envoie rien au réseau. Il ne renvoie jamais le contenu des fichiers ni des secrets (un jeton n'est signalé que par sa longueur), seulement un nom de règle, un numéro de ligne, un hôte d'URL et un chemin de clé de configuration. Les fichiers illisibles figurent dans unreadableFiles et n'ont pas été audités.
run_package_cve_scan Mac / Linux Compare les paquets installés (Mac : Homebrew / Linux : dpkg, dnf, zypper, pacman) à une carte CVE locale. Aucune communication réseau n'a lieu. Sous Linux, si la liste des paquets n'a pas pu être lue ou a expiré, l'outil ne répond pas « aucun résultat » ; complete passe à false et incompleteReason donne la raison (un résultat inachevé n'est pas un résultat sain). Sous Ubuntu (20.04, 22.04, 24.04, 26.04), l'outil utilise les données propres à Ubuntu, compare par nom et version du paquet source, et ne vérifie que les CVE de CVSS 7,0 ou plus pour lesquelles Ubuntu a déjà publié un correctif ; « aucun résultat » ne signifie donc pas qu'il n'y a pas de CVE connue. Le résultat gagne ecosystem et release, chaque détection porte binary (le nom du paquet binaire installé), et les correctifs disponibles seulement via Ubuntu Pro sont marqués proOnly. Les dérivées d'Ubuntu (Linux Mint, Pop!_OS, etc.) et les versions non prises en charge renvoient complete = false avec la raison dans incompleteReason, sans bascule vers les données Debian.
run_package_cve_scan_languages Mac / Linux Compare les fichiers de verrouillage de dépendances npm, PyPI, crates.io, RubyGems, Packagist, Go et Maven à la même carte CVE locale. Aucune communication réseau n'a lieu.
run_package_lifecycle_script_scan Mac / Linux Liste les scripts de cycle de vie (preinstall / install / postinstall / prepare) des package.json présents dans le node_modules d'un projet. L'outil se contente de lire des fichiers : rien n'est exécuté et rien n'est envoyé sur le réseau. Chaque entrée porte un indicateur à titre indicatif pour les motifs d'apparence risquée (comme curl|sh), mais il s'agit d'un inventaire, pas d'un verdict sur la malveillance d'un paquet.
run_typosquat_scan Mac / Linux Vérifie si le nom d'une dépendance du package.json d'un projet ne diffère que d'un ou deux caractères de celui d'un paquet npm connu (tentative possible de typosquatting). Seuls des fichiers locaux sont lus et aucun registre n'est contacté. Il s'agit d'une heuristique indicative : des faux positifs sont possibles.
run_npm_audit_signatures Mac / Linux Cet outil interroge le registre npm (registry.npmjs.org). Il exécute npm audit signatures pour vérifier les signatures et la provenance des paquets installés. Il est désactivé par défaut et refuse de s'exécuter tant que vous ne l'avez pas activé dans les réglages (Pro uniquement sur Mac).
get_quarantine_status Mac / Linux Renvoie le contenu du coffre de quarantaine : chemin d'origine, nom de la menace détectée, date de mise en quarantaine et taille.
get_canary_status Mac / Linux Renvoie l'état des fichiers leurres anti-rançongiciel (canary) ainsi que les 50 incidents détectés les plus récents.
get_ransomware_entropy_guard_status Mac Renvoie l'état d'activation de la détection générique des rançongiciels par entropie ainsi que ses incidents récents de rafale d'entropie.
get_honeytoken_status Mac Renvoie l'état d'activation de la garde honeytoken d'identifiants ainsi que ses événements récents de détection d'accès.
get_browser_credential_watch_status Mac Renvoie l'état d'activation de la surveillance de l'accès aux identifiants du navigateur ainsi que ses événements récents de détection d'accès.
get_forensic_evidence_bundles Mac Renvoie la liste des bundles de preuves forensiques (liste des processus, connexions réseau, fichiers modifiés, etc.) enregistrés lors du déclenchement d'un Air-Gap d'urgence.
get_ransomware_recovery_snapshots Mac Renvoie les instantanés APFS de récupération (avant les dégâts, à la détection, manuels), celui recommandé pour la restauration, l'état du mode de conservation et l'intervalle des instantanés. Un instantané de détection peut déjà contenir des fichiers chiffrés. Réservé à Pro.
search_exec_events Mac / Linux Recherche dans l'enregistrement des exécutions de processus. Sur Mac, il s'agit du journal basé sur eslogger ; sous Linux, du journal de l'enregistreur d'exécutions (avec une chaîne de hachage qui rend toute altération détectable). Le filtrage porte notamment sur le chemin et les arguments, et le résultat indique aussi l'état de l'enregistreur et si le journal a pu être lu. Pro uniquement sur Mac. Le journal Linux est réservé à root : le serveur MCP doit donc s'exécuter en root.
get_process_tree Mac / Linux Reconstitue, à partir de l'enregistrement des exécutions, les ancêtres et les descendants d'un processus donné. Seuls les processus réellement vus par l'enregistreur sont connus. Pro uniquement sur Mac.
get_port_anomaly_incidents Mac / Linux Renvoie l'état de référence de la protection contre les ports anormaux, les ports actuellement bloqués automatiquement et les 50 incidents les plus récents. La réponse précise explicitement que les ports actuellement bloqués sont un instantané de l'état présent, sans horodatage, distinct de l'historique des incidents qui, lui, est horodaté.
get_ssh_guard_incidents Mac / Linux Renvoie l'état et l'historique de la garde contre la force brute SSH : si elle bannit ou ne fait que détecter (par exemple parce qu'un autre outil protège déjà sshd), les sources actuellement bannies avec la durée restante, et jusqu'à 200 enregistrements récents (une source a été bannie, simplement détectée, ou une connexion a réussi après une série d'échecs de la même source). Les noms d'utilisateur essayés ne sont pas conservés sous Linux (seulement leur nombre) et sont renvoyés assainis, jusqu'à 5, sous Mac. Le Mac renvoie aussi les connexions SSH récentes (source, utilisateur, méthode, empreinte de clé). Lecture seule : aucun outil MCP ne lève un bannissement. Sous Linux, la liste des bannissements n'est lisible que par root ; un appel sans root ne renvoie que le nombre. Linux : la Server Edition, et l'édition Client tant que sshd tourne. Mac : Pro uniquement.
get_port_scan_incidents Linux Renvoie le journal des analyses de ports (reconnaissance) détectées contre cet appareil : chaque IP source ayant atteint de nombreux ports distincts en peu de temps, le nombre de ports touchés (avec un échantillon) et si elle a en outre été bloquée automatiquement, et pour combien de temps.
get_runtime_threat_status Mac Indique si ce Mac est isolé (Air-Gap) à la suite d'une détection de logiciel malveillant par XProtect, et l'incident déclencheur. À consulter en premier lors d'un Air-Gap actif.
verify_fim Linux Recalcule l'empreinte d'environ 150 fichiers système critiques et la compare à la référence enregistrée pour détecter toute altération. Lancé en root, le résultat contient aussi un champ ajouté, recentIntrusionContext : pour chaque modification récente, le processus qui l'a faite (compte, exécutable, commande) et la connexion SSH à laquelle il appartient (source, heure de connexion, méthode d'authentification), ou la raison pour laquelle cela n'a pas pu être trouvé.
get_file_scan_guard_status Linux (Server) Renvoie la configuration du File Scan Guard (ClamAV) et l'état du Vault de quarantaine qu'il alimente (outil de la Server Edition ; il ne concerne pas les paramètres de la garde anti-malware de l'édition Client).
get_ebpf_incidents Linux (Server) Renvoie l'état d'isolation actuel du garde d'exécution eBPF et l'historique des incidents à son origine. Sur la Server Edition, chaque enregistrement porte aussi le temps entre la détection et la réponse en millisecondes (detect_to_receive_ms, receive_to_action_ms, detect_to_action_ms), et le résultat inclut l'état du heartbeat de Falco (heartbeat).
get_resource_guard_incidents Linux (Server) Renvoie l'historique du garde contre l'épuisement des ressources et les anomalies de processus (fuites mémoire, boucles de plantage), avec un niveau de confiance (ce garde appartient à la Server Edition ; l'édition Client ne l'exécute pas, le résultat y est donc toujours vide).
get_incident_timeline Mac / Linux Regroupe les détections de tous les gardes dans une chronologie unique, avec la filiation des processus et des étiquettes MITRE ATT&CK (expérimental).
get_network_history Mac Enregistre, pour chaque réseau Wi-Fi mémorisé, le nombre d'appareils passerelle distincts ayant répondu et la dernière date de vue, et signale les autres réseaux au nom suspicieusement similaire (candidats Evil Twin). Permet aussi de savoir si vous vous êtes déjà connecté à un réseau donné.
get_vpn_status Linux (Client) Indique si le VPN sur réseaux non fiables (WireGuard / Tailscale) est activé, si le tunnel est réellement établi, et si le kill switch anti-fuite est armé.
get_link_guard_status Linux (Client) Renvoie l'état d'activation de Link Guard (blocage du phishing / des sites malveillants via inspection DNS / TLS SNI / hôte HTTP), son mode (désactivé / avertissement / blocage), la liste blanche, ainsi que les événements de blocage/avertissement des 7 derniers jours.
get_air_gap_status Linux (Client) Indique si l'isolation Air-Gap d'urgence (tout le trafic bloqué) est actuellement active, la raison du déclenchement, le temps restant avant la levée automatique, et tous les processus actuellement gelés par SIGSTOP.
get_sharing_services_status Linux (Client) Renvoie le paramètre qui arrête automatiquement SSH, Samba et le partage d'écran (GNOME Remote Desktop / VNC / xrdp) sur les réseaux non fiables, ainsi que l'état réel des services effectivement arrêtés et restaurés.
get_bluetooth_guard_status Linux (Client) Renvoie le paramètre de Bluetooth Guard qui désactive de force la visibilité sur les réseaux non fiables, ainsi que l'état réel du contrôleur (alimenté, visible, appareils connectés).
get_usb_guard_status Linux (Client) Renvoie les paramètres de la garde de stockage USB et de la garde clavier BadUSB (la saisie n'est bloquée que via evdev — un appareil n'est jamais désautorisé au niveau du noyau), ainsi que les appareils connectés et ceux en attente d'approbation.
get_fleet_status Linux Renvoie l'état côté appareil de Fleet (gestion centralisée par organisation, fonctionnalité en préparation pour RoamSwitch Business) : appareil enrôlé ou non, version de la politique appliquée, état des check-ins, etc. Aucun code d'enrôlement, jeton, clé ou donnée de licence n'est renvoyé. Fleet ne dispose d'aucun canal de commande à distance : un administrateur ne peut ni isoler ni piloter cet appareil.
get_sensor_audit_results Mac / Linux Renvoie les résultats des audits actifs demandés à un RoamSwitch Sensor appairé (un produit distinct, exécuté sur votre propre matériel dans le même réseau local) : en attente, terminé ou échoué. Il apporte la vue depuis l'extérieur de ce qui est réellement joignable, invisible depuis l'intérieur de l'appareil. Demander un audit ou appairer un Sensor n'est pas possible avec cet outil.

Parmi les outils ci-dessus, ceux qui ne lisent que l'état local (quarantaine, canari, anomalie de port, menace runtime, historique des notifications, chronologie des incidents, historique réseau, statut VPN / Link Guard / Air-Gap / services de partage / Bluetooth / garde USB, etc.) continuent de fonctionner même lorsque RoamSwitch a coupé le réseau en urgence suite à une menace détectée. Combinés à un LLM local, ils permettent d'enquêter sur la cause sur place pendant la coupure.

Codes de motif de verify_security_findings. Sur les deux plateformes, on trouve failing (toujours d'actualité), passing (aucun problème), not_applicable (sans objet ici par conception), not_verifiable (impossible à confirmer de cette façon) et unknown_check_id (ce checkId n'existe pas). Seul Mac renvoie helper_unavailable (l'assistant privilégié n'est pas connecté), gateway_unknown (la passerelle n'a pas pu être identifiée), no_baseline (comparaison impossible avec la MAC de la passerelle d'un réseau de confiance enregistré ; sans réseau de confiance enregistré, la surveillance ARP via MCP renvoie toujours cette valeur), not_measured (la liste des ports n'a encore jamais été mesurée ; n'apparaît que dans le rapport de l'app, normalement pas via MCP), location_unavailable (la lecture du Wi-Fi exige l'autorisation de localisation) et tool_failed (une commande système n'a rien renvoyé ou sa sortie ne permettait pas de trancher entre activé et désactivé, par exemple SIP affichant enabled (Custom Configuration)). Seul Linux renvoie not_root (l'outil ne tourne pas en root et ne peut donc pas lire les données), daemon_unknown (l'état du démon est indisponible), tool_missing (une commande nécessaire est absente), tool_timeout (une commande externe n'a pas répondu à temps et a été interrompue), docker_unreachable (Docker est injoignable) et unconfirmed (le contrôle a lui-même signalé son résultat comme non confirmé). Avec inconclusive, on ne peut ni confirmer ni exclure que la correction ait fonctionné. Rétablissez le privilège ou la connexion manquants, puis rappelez l'outil.

Seul run_npm_audit_signatures (registre npm), sur option et réservé à Pro sur Mac, communique avec un hôte externe. run_active_vuln_scan (désactivé par défaut) ne sonde que 127.0.0.1, et sur Mac get_exposed_ports se contente d'envoyer un HTTP GET par port exposé vers 127.0.0.1 pour vérifier les en-têtes. Pour retrouver l'adresse MAC de la passerelle, les outils de diagnostic sur Mac peuvent envoyer un ping ICMP, normalement un seul (quelques-uns si la MAC reste introuvable), à la passerelle du réseau local. Sous Linux, get_security_report et verify_security_findings n'envoient rien au réseau local et lisent seulement la passerelle dans les caches locaux (les autres outils qui résolvent à nouveau la MAC de la passerelle, comme get_guard_status, peuvent envoyer un ping).

Cas d'usage pratiques par scénario

Comment interroger l'IA au quotidien et en développement

Exemples de prompts et de réponses IA pour l'audit des ports en développement local, la vérification du Wi-Fi public, la détection d'URL de phishing, etc. Copiez les prompts directement dans votre IA.

🛠️

Audit d'exposition des ports de serveurs locaux & DB

Dév Web / Docker

Lors du lancement de Next.js, Vite, Python, Docker, Redis, etc., demandez à l'IA d'auditer si des ports sont involontairement exposés sur 0.0.0.0 au réseau local.

💬 Exemple de prompt pour l'IA
Audite les ports exposés des serveurs de développement et conteneurs tournant actuellement sur mon Mac. Y a-t-il des ports dangereux liés à 0.0.0.0 et visibles sur le réseau local ?
⚡ Tool: get_exposed_ports
Résultats de l'audit des ports:
• 🚨 Port 3000 (node / Next.js): Exposé à l'extérieur sur 0.0.0.0:3000
• 🚨 Port 6379 (redis-server): Exposé à l'extérieur sur 0.0.0.0:6379 (sans authentification ; accessible par d'autres appareils sur le même Wi-Fi)
• ✅ Port 5432 (postgres): Lié à 127.0.0.1:5432 (localhost uniquement / sûr)
💡 Recommandation: Modifiez la configuration Redis pour bind 127.0.0.1 et démarrez Next.js avec npm run dev -- -H 127.0.0.1.
☕

Vérification de sécurité lors de la connexion à un Wi-Fi public

Télétravail / Wi-Fi public

Juste après vous être connecté au Wi-Fi gratuit d'un café ou d'un hôtel, demandez à l'IA un diagnostic complet pour vérifier si le pare-feu et la protection ARP sont bien actifs.

💬 Exemple de prompt pour l'IA
Je viens de me connecter au Wi-Fi public d'un café. Fais un diagnostic complet pour vérifier si je peux travailler en sécurité. Quel est l'état du pare-feu et de la protection contre l'usurpation ARP ?
⚡ Tools: get_security_report, get_guard_status
Résumé du diagnostic de sécurité Mac:
• 🛡️ Score global: 88 / 100 (Grade: A-)
• 📡 Statut réseau: Réseau non fiable (Mode déplacement / filtrage de paquets actif)
• ✅ Pare-feu / Mode furtif: Activé (bloque les sondages externes)
• ✅ Isolement automatique anti-usurpation ARP: Activé (isolement auto en cas d'interception)
• ⚠️ Action recommandée: Le chiffrement FileVault est désactivé. Il est recommandé de l'activer dans les Réglages Système.
✉️

Analyse des liens suspects dans les e-mails & messages

Anti-phishing / Audit d'URL

Faites inspecter instantanément par l'IA les URL d'e-mails ou de messages Slack/Discord suspects, entièrement en local sans envoyer de données à l'extérieur (Zero Telemetry).

💬 Exemple de prompt pour l'IA
J'ai reçu un e-mail avec le lien 'https://apple.com.login-auth-verify.xyz/account'. Peux-tu analyser la sécurité de cette URL avant que je ne clique dessus ?
⚡ Tool: audit_url_safety
Rapport de sécurité de l'URL (Analyse 100% locale):
• 🚨 Niveau de risque: Dangerous (Dangereux / Score: 8/100)
• ❌ Sous-domaine usurpateur: Se fait passer pour apple.com, mais le domaine réel est login-auth-verify.xyz.
• ❌ TLD à haut risque: .xyz est très fréquemment utilisé pour des campagnes de phishing éphémères.
• 🔒 Zero Telemetry: Analysé en local sur votre Mac sans aucune transmission vers des serveurs tiers.
• 🛑 Recommandation: Ne cliquez surtout pas sur ce lien, supprimez et signalez l'e-mail.
🤖

Garde-fou de sécurité autonome pendant le codage

Workflows d'agents IA

Lorsque Claude Code ou Antigravity configure des services ou exécute des suites de tests, laissez l'agent exécuter les outils MCP comme garde-fou pour vérifier qu'aucun port n'a été exposé par erreur.

💬 Exemple de prompt pour l'IA
Construis l'API backend et l'environnement de test du projet. Ensuite, utilise RoamSwitch MCP pour t'assurer qu'aucun port externe indésirable n'est ouvert avant de valider.
⚡ Tool: get_exposed_ports
Résumé de l'exécution autonome par l'IA:
1. Serveur Fastify démarré sur le port 8080.
2. 🔍 Vérification RoamSwitch MCP: get_exposed_ports exécuté et confirmation que le port est strictement lié à 127.0.0.1:8080 (localhost uniquement).
3. Environnement sécurisé vérifié. Poursuite des tests d'intégration.
📋

Rapport de sécurité quotidien & Export Markdown

Audit & Création de rapports

Générez en un clic un rapport d'état de sécurité Markdown soigné pour la conformité d'entreprise, les audits IT ou votre journal de travail personnel.

💬 Exemple de prompt pour l'IA
Génère un rapport récapitulatif au format Markdown de l'état de sécurité actuel de mon Mac pour mon journal quotidien, avec la liste des points à améliorer.
⚡ Tools: get_security_report, get_guard_status
Exemple de rapport Markdown généré:
## 🛡️ Mac Security Health Report (2026-08-28)
- Score global: 96 / 100 (Grade: A+)
- État des défenses principales:
  • FileVault: ✅ Activé (APFS Encrypted)
  • SIP: ✅ Activé
  • Pare-feu / Mode furtif: ✅ Activé
  • Protection anti-usurpation ARP: ✅ Activé
  • Protection contre les menaces DNS: ✅ Activé (Quad9 Secure DNS)
- Actions recommandées: Aucune (très bonne posture de sécurité)
🛡️

Vérification des gardes USB, Bluetooth & téléchargement

Protection physique & périphériques

Vérifiez que les protections en temps réel comme l'alerte de stockage USB inconnu, la surveillance Bluetooth et l'analyse des téléchargements sont bien actives.

💬 Exemple de prompt pour l'IA
Est-ce que les modules de garde (stockage USB, Bluetooth, menaces DNS, téléchargements Web/Mail) fonctionnent tous correctement ?
⚡ Tool: get_guard_status
Statut des gardes RoamSwitch:
• 🛡️ Niveau de protection actif: Balanced (Mode de protection standard)
• ✅ Garde stockage USB: Actif (alerte/bloque les clés USB non enregistrées)
• ✅ Garde Bluetooth: Actif (surveille la proximité d'appareils non jumelés)
• ✅ Protection téléchargements Web/Mail: Actif (analyse automatique ClamAV des fichiers en quarantaine)
• ✅ Protection menaces DNS: Actif (bloque les domaines malveillants C2 et de phishing)
💡

Conseils sur l'utilisation de l'app et les alertes reçues

Guide des fonctions / Conseils d'alerte

Consultez l'IA sur toute notification, avertissement ou détail technique (filtre de paquets, FSEvents, ClamAV, protection USB, etc.) avec des explications vérifiées.

💬 Modèle A : Blocage de port dev & Configuration sécurisée (Next.js / Web Dev)
RoamSwitch a affiché '🚪 Port inconnu (3000) bloqué'. C'est mon serveur Next.js. Comment le configurer pour un usage local sécurisé ?
⚡ Tool: get_app_help / Resource: roamswitch://docs/settings-guide
Réponse de la base de connaissances RoamSwitch :
• 🚪 Raison : Le serveur a démarré sur 0.0.0.0 (public). RoamSwitch a bloqué les accès externes entrants.
• ⚙️ Solution :
  1. Recommandé : Lancez avec npm run dev -- -H 127.0.0.1.
  2. Partage réseau : Autorisez le port 3000 dans l'audit des ports.
💬 Modèle B : Analyse de sécurité après isolation d'urgence (après passage au partage 4G/5G)
RoamSwitch a coupé la connexion au café pour '🚨 Usurpation ARP détectée'. Je suis passé en partage de connexion. Que s'est-il passé et comment réagir en sécurité ?
⚡ Tool: get_app_help / Resource: roamswitch://docs/alerts-and-messages
Réponse de la base de connaissances RoamSwitch :
• 🔍 Analyse de l'incident : Un appareil a falsifié les paquets ARP pour usurper la passerelle (attaque Man-in-the-Middle).
• 🛡️ Défense automatique : RoamSwitch a isolé immédiatement l'interface réseau en mode air-gap d'urgence.
• 🛑 Recommandation : Ne vous reconnectez pas à ce Wi-Fi public. Poursuivez vos activités en partage de connexion.
💬 Modèle C : Éjection USB & Enregistrement sécurisé sur liste blanche
RoamSwitch a affiché '🔌 Stockage USB non enregistré éjecté'. C'est ma propre clé USB. Comment l'enregistrer en lecture seule ?
⚡ Tool: get_app_help / Resource: roamswitch://docs/settings-guide
Réponse de la base de connaissances RoamSwitch :
• 🔌 Raison de l'éjection : Éjecté pour prévenir les fuites de données et les attaques BadUSB.
• ⚙️ Procédure : 1. Ouvrez 'Paramètres' depuis l'icône RoamSwitch → 2. Sélectionnez l'onglet 'Protection USB' → 3. Cliquez sur 'Ajouter depuis les appareils connectés' → 4. Définissez l'autorisation sur 'Lecture seule (Recommandé)' et enregistrez.
💬 Modèle D : Déconnexion de l'assistant & Restauration du démon
La barre des menus affiche '⚠️ Assistant non connecté'. Comment le restaurer ?
⚡ Tool: get_app_help / Resource: roamswitch://docs/troubleshooting
Réponse de la base de connaissances RoamSwitch :
• ⚠️ Cause : La communication XPC avec le démon privilégié RoamSwitchHelper est interrompue.
• 🛠️ Restauration :
  1. Ouvrez le Terminal et redémarrez l'assistant :
    sudo killall RoamSwitchHelper
  2. Relancez l'application RoamSwitch.
  3. Dans 'Réglages Système' > 'Général' > 'Ouverture et extensions', assurez-vous que RoamSwitchHelper est activé.
🧯

Triage hors ligne avec un LLM local + MCP après un verrouillage d'urgence Air-Gap

Réponse à incident / Triage LLM local

Lorsque Air-Gap (coupure réseau d'urgence) se déclenche — par exemple lors de la détection d'un ransomware —, cela coupe aussi la communication avec les clients IA cloud comme Claude Desktop. Mais le serveur MCP de RoamSwitch continue de fonctionner, car il ne communique que via un tube de processus local ; associé à un LLM local (via Ollama, par exemple), vous pouvez poursuivre le diagnostic sans aucun accès réseau. La détection d'anomalies de journaux, la détection d'altération et la vérification des CVE connues sont entièrement locales : c'est exactement le moment pour lequel elles ont été conçues, quand le réseau lui-même a disparu.

💬 Exemple de prompt pour l'IA
La protection anti-ransomware de RoamSwitch s'est déclenchée et l'hôte est maintenant en mode Air-Gap (coupure réseau d'urgence). Il n'y a aucun accès réseau, mais diagnostique la situation actuelle : quand cela s'est-il produit, quel processus et quels fichiers ont été touchés, y a-t-il une altération des fichiers système, une activité de journal suspecte associée, et un signe qu'une vulnérabilité connue a été exploitée ?
⚡ Tools: get_canary_status, get_port_anomaly_incidents, audit_security_logs, get_quarantine_status (Linux Server: get_ebpf_incidents / Mac: get_runtime_threat_status)
Résultats du triage hors ligne (aucune activité réseau) :
• 🐛 Canari déclenché : chiffrement de /var/www/decoy_invoice.pdf détecté à 14:32:07 ; le processus suspicious_enc (PID 8823) a été immédiatement gelé et isolé
• 🔌 Surveillance des ports (Port Anomaly Guard) : aucun nouveau blocage automatique dans l'historique des incidents — le déclenchement du canari semble être le seul point d'entrée, aucun port de porte dérobée supplémentaire n'a été ouvert
• 📜 Corrélation des journaux (détection d'anomalies) : un pic d'échecs d'authentification sshd débute 12 minutes avant le déclenchement (pic de fréquence détecté, Z-score 5,2) — un point d'entrée possible
• 🔒 Détection d'altération (FIM) : aucune altération constatée sur ~150 chemins système critiques — rien n'indique que la brèche a atteint la couche système
• 📦 Vérification des CVE connues : comparaison avec la carte CVE locale — aucune vulnérabilité connue critique dans les paquets concernés
💡 Action recommandée : la brèche est probablement confinée à la racine web. Avant de restaurer depuis une sauvegarde, vérifiez aussi individuellement les autres fichiers de ce répertoire.
FAQ

À propos de l'intégration MCP

Q. Ne communique-t-il vraiment jamais avec l'extérieur ?

A. Exact. Le serveur MCP est un processus local lancé directement par votre client IA via les entrées/sorties standard (stdio) et n'envoie aucune télémétrie. Les résultats des diagnostics sont calculés sur place, sur ce Mac / Linux. Seul run_npm_audit_signatures (registre npm), sur option et réservé à Pro sur Mac, communique avec un hôte externe. run_active_vuln_scan (désactivé par défaut) ne sonde que 127.0.0.1, et sur Mac get_exposed_ports se contente d'envoyer un HTTP GET par port exposé vers 127.0.0.1 pour vérifier les en-têtes. Pour retrouver l'adresse MAC de la passerelle, les outils de diagnostic sur Mac peuvent envoyer un ping ICMP, normalement un seul (quelques-uns si la MAC reste introuvable), à la passerelle du réseau local. Sous Linux, get_security_report et verify_security_findings n'envoient rien au réseau local et lisent seulement la passerelle dans les caches locaux (les autres outils qui résolvent à nouveau la MAC de la passerelle, comme get_guard_status, peuvent envoyer un ping).

Q. Puis-je l'utiliser sans la version Pro ?

A. Sous Linux, tous les outils sont disponibles gratuitement. Avec la version gratuite de l'app Mac, la plupart des outils fonctionnent aussi, mais quatre sont réservés à Pro et renvoient une erreur lorsque Pro n'est pas actif : get_ransomware_recovery_snapshots, search_exec_events, get_process_tree et run_npm_audit_signatures. Par ailleurs, l'activation réelle de chaque garde automatique dépend aussi de l'état de la licence Pro, donc les outils ne peuvent confirmer que l'état de l'interrupteur dans les réglages.

Q. Quels clients IA sont pris en charge ?

A. Tout client prenant en charge le transport stdio du MCP (Model Context Protocol) devrait fonctionner, même au-delà de ceux listés ci-dessus. Vérifié avec Claude Desktop, Claude Code, OpenAI Codex CLI, OpenCode et Antigravity.

Q. Antigravity affiche une erreur « Hook Failure » ou de télémétrie lors de l'appel d'outils ?

A. Un hook PreToolUse provenant d'un plugin externe (tel que la télémétrie Google Cloud) dans Antigravity peut bloquer l'exécution. Ouvrez ~/.gemini/config/plugins/.../hooks.json et définissez "enabled": false.

Q. Puis-je toujours interroger le serveur MCP lorsque le réseau est coupé ?

A. Oui, si vous utilisez un LLM local (via OpenCode avec Ollama ou LM Studio), tout s'exécute à 100% sur votre Mac / Linux et fonctionne même en cas d'isolation d'urgence du réseau. Si vous utilisez un LLM cloud (comme l'API Claude), passez en partage de connexion sécurisé avant d'interroger l'IA.