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 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 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).
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
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.
• 🚨 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
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.
• 🛡️ 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
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).
• 🚨 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
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.
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
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.
## 🛡️ 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
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.
• 🛡️ 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
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.
• 🚪 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.
• 🔍 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.
• 🔌 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.
• ⚠️ 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 RoamSwitchHelper2. 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
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.
• 🐛 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.
À 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.