Integrazione IA (MCP)

Chiedi direttamente ad assistenti IA come Claude lo stato di sicurezza del tuo Mac / Linux

RoamSwitch include un server MCP (Model Context Protocol) di sola lettura. Collegalo a un client MCP e chiedi semplicemente, in linguaggio naturale, "il mio Mac / Linux è sicuro in questo momento?" oppure "quali porte sono esposte?": otterrai risposte basate sulle diagnosi precise di RoamSwitch stesso, non su supposizioni. Non può cambiare il livello di blocco, isolare porte o eseguire altre azioni; la comunicazione con il tuo client IA rimane interamente sul dispositivo tramite stdio (un'estensione della nostra politica Zero Telemetry).

🔒 Perché è sicuro

  • Sola lettura: solo diagnostica di sicurezza, monitoraggio delle porte e verifica dello stato delle guardie. Non è implementato alcuno strumento operativo come il cambio del livello di blocco, l'isolamento delle porte o l'espulsione dei dispositivi.
  • Completamente locale: la comunicazione con il tuo client IA (Claude Desktop/Code, ecc.) avviene solo tramite stdio e resta tra il client e il processo RoamSwitch sul tuo Mac / Linux. Non viene mai inviata telemetria. Usano la rete solo funzioni opzionali disattivate per impostazione predefinita: la verifica delle vulnerabilità, che esamina solo la tua macchina (127.0.0.1), e la verifica delle firme npm, che interroga il registro npm.
  • Prevenzione di errori: non essendoci strumenti operativi, non c'è rischio che un'iniezione di prompt o simili modifichi accidentalmente il firewall o le impostazioni di rete.
Configurazione

Configurazione in due passaggi

1Percorso del binario

Incluso in RoamSwitch.app: non è necessario alcun download o installazione separati.

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

2aPer Claude Desktop

Aggiungi quanto segue a "mcpServers" in ~/Library/Application Support/Claude/claude_desktop_config.json, quindi riavvia Claude Desktop.

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

2bPer Claude Code

Basta eseguire una volta il seguente comando nel terminale.

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

2cPer OpenAI Codex CLI

Aggiungi quanto segue a ~/.codex/config.toml, oppure esegui il comando seguente nel terminale.

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

2dPer OpenCode

Aggiungi quanto segue a opencode.json nella root del progetto (o globale in ~/.config/opencode/opencode.json).

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

💡 Supporto LLM locali: Con modelli locali tramite Ollama o LM Studio, puoi consultare RoamSwitch offline anche se la rete è stata isolata per emergenza in presenza di minacce.

2ePer Antigravity

Aggiungi quanto segue a ~/.gemini/config/mcp_config.json (oppure a .agents/mcp_config.json nella radice del tuo workspace).

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

* Nota: se si verifica un errore Hook Failure o di telemetria in Antigravity CLI (agy), disabilitare l'hook impostando "enabled": false in ~/.gemini/config/plugins/.../hooks.json.

1Percorso del binario

Incluso nel pacchetto apt / rpm / AUR e installato automaticamente in /usr/bin/roamswitch-mcp. Non è necessario alcun download o build separato (uguale per l'edizione Client e l'edizione Server).

/usr/bin/roamswitch-mcp

Lo stesso binario e la stessa procedura di configurazione funzionano invariati anche con l'edizione Server (headless). Per i dettagli, consulta il capitolo "Agenti IA / Integrazione MCP" del manuale operativo di Linux Server.

2aPer Claude Desktop

Claude Desktop non ha una versione Linux ufficiale. Se usi una build non ufficiale (ad es. claude-desktop-debian), aggiungi quanto segue a "mcpServers" in ~/.config/Claude/claude_desktop_config.json e riavvia l'app.

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

2bPer Claude Code

Basta eseguire una volta il seguente comando nel terminale.

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

2cPer OpenAI Codex CLI

Aggiungi quanto segue a ~/.codex/config.toml, oppure esegui il comando seguente nel terminale.

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

2dPer OpenCode

Aggiungi quanto segue a opencode.json nella root del progetto (o globale in ~/.config/opencode/opencode.json).

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

💡 Supporto LLM locali: Con modelli locali tramite Ollama o LM Studio, puoi consultare RoamSwitch offline anche se la rete è stata isolata per emergenza in presenza di minacce.

2ePer Antigravity

Aggiungi quanto segue a ~/.gemini/config/mcp_config.json (oppure a .agents/mcp_config.json nella radice del tuo workspace).

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

* Nota: se si verifica un errore Hook Failure o di telemetria in Antigravity CLI (agy), disabilitare l'hook impostando "enabled": false in ~/.gemini/config/plugins/.../hooks.json.

Strumenti disponibili

Strumenti di sola lettura (attualmente 33 su Mac / 38 su Linux, in continua espansione)

get_security_report

Esegue una verifica a 18 punti su Mac (FileVault, SIP, Gatekeeper, firewall, robustezza della crittografia Wi-Fi, ARP spoofing, porte esposte, ecc.) oppure a 27 punti client / 34 punti server su Linux (hardening del kernel, protezione del socket Docker e dei container privilegiati, isolamento del runtime dei container, vulnerabilità note, ecc.), restituendo un punteggio e consigli di miglioramento.

get_exposed_ports

Elenca tutte le porte attualmente in ascolto e, per quelle esposte esternamente, restituisce un controllo dettagliato che include il rilevamento di servizi a rischio noti (Redis, MongoDB, ecc.). Su Mac, invia un HTTP GET per ogni porta esposta a 127.0.0.1 per controllare le intestazioni.

get_guard_status

Restituisce lo stato delle protezioni per porte, ARP, USB, Bluetooth, download Web/Mail, minacce DNS e il livello di sicurezza attivo.

audit_url_safety

Analizza i link e-mail o URL web per rilevare phishing, attacchi omografi Unicode, sottodomini ingannevoli e TLD ad alto rischio (Zero Telemetry).

get_app_help

Cerca nella base di conoscenza ufficiale di RoamSwitch riguardante tutte le funzioni, avvisi, impostazioni e risoluzione dei problemi in locale per fornire spiegazioni e consigli precisi.

audit_security_logs

Aggrega i log di sicurezza recenti (Mac: errori di autenticazione sudo, tentativi di forza bruta SSH, blocchi Gatekeeper, rilevamenti XProtect, ecc. / Linux: errori di autenticazione sudo, forza bruta SSH, blocchi firewall, dinieghi AppArmor, rilevamenti ClamAV, ecc.), maschera automaticamente le informazioni sensibili come chiavi API e token, e restituisce anche i risultati del rilevamento di nuovi pattern (tramite template dei log) e delle anomalie di frequenza (picchi statistici). Su Linux, se il journal non può essere letto (per esempio per timeout), gli zeri nel conteggio non significano che non sia successo nulla; journalReadComplete diventa false e journalError indica il motivo.

get_notification_history

Restituisce la cronologia delle notifiche inviate da RoamSwitch (anomalie di controllo dei log di sicurezza, rilevamenti ClickFix e altro) degli ultimi 7 giorni, le più recenti per prime.

roamswitch://docs/* (MCP Resources)

Risorse di documentazione ufficiali che i client IA possono leggere direttamente nel contesto (specifiche, avvisi, impostazioni, FAQ).

Altri strumenti di sola lettura

Strumento Piattaforma Descrizione
audit_secrets Mac / Linux Rileva chiavi API e chiavi private esposte in un testo, un file o un albero di directory (i risultati vengono mascherati nell'output).
run_active_vuln_scan Mac / Linux Verifica attiva delle vulnerabilità, non distruttiva e limitata a 127.0.0.1. Non contatta altri host, ma invia richieste di rete: per questo è disattivata per impostazione predefinita e richiede l'attivazione esplicita nelle impostazioni.
get_vulnerability_scan_history Mac / Linux Restituisce l'ultimo risultato registrato e i giorni trascorsi (pass_age) per ogni probe registrato da run_active_vuln_scan.
verify_security_findings Mac / Linux Rivaluta le voci (checkId) di get_security_report in base allo stato attuale e restituisce un verdetto per ciascuna, stillPresent (ancora applicabile), resolved (risolta, oppure non applicabile per progetto) o inconclusive (non determinabile), insieme a un codice di motivo indipendente dalla lingua. Serve a verificare, dopo una correzione, che abbia davvero avuto effetto. Una voce che non è stato possibile misurare, per esempio per privilegi mancanti, helper privilegiato non connesso o Docker non raggiungibile, non viene mai segnalata come sicura e risulta inconclusive. Omettendo checkIds vengono verificate tutte le voci (fino a 50 identificatori su Mac e 64 su Linux; su Linux è accettato anche isServer). Su Mac, host_firewall, network_stealth_mode, gateway_arp_lock, malware_scanning, dns_threat_guard e usb_zero_trust sono determinati dalle impostazioni dell'app RoamSwitch, quindi riflettono tali impostazioni e non sono una nuova misurazione dello stato reale del sistema operativo. È di sola lettura, non si connette a host esterni e non ripara nulla né modifica impostazioni. Su Linux non invia nulla nemmeno alla LAN e legge il gateway solo dalle cache locali. Su Mac, per ricavare l'indirizzo MAC del gateway, può inviare un ping ICMP, di norma uno (pochi se il MAC non si risolve), al gateway della LAN.
audit_mcp_configs Mac / Linux Legge i file di configurazione MCP dei client IA (Claude Desktop, Claude Code, Cursor, Windsurf, VS Code, Cline, Gemini CLI, più .mcp.json e file simili nelle cartelle di progetto registrate) e segnala impostazioni a rischio. Rileva gli strumenti approvati automaticamente senza conferma a ogni chiamata (auto_approve), i server http:// in chiaro su un host diverso da loopback, indicati sia nel campo url sia come argomento di avvio, come --server http://… (remote_plain_http), gli avvii con comandi shell o interprete su una riga (shell_wrapper), i launcher come npx / uvx / docker run che scaricano un pacchetto o un'immagine senza versione fissata (unpinned_package_launcher), docker run con --privileged o con il socket Docker o il file system root montati (container_host_access), le variabili d'ambiente che caricano codice aggiuntivo all'avvio, come LD_PRELOAD o --require in NODE_OPTIONS (nomi senza distinzione tra maiuscole e minuscole, valori mai restituiti; code_loading_env), le voci che puntano a HexStrike AI, un backend di strumenti d'attacco senza autenticazione (hexstrike), i file di configurazione scrivibili da gruppo o altri (world_writable_config), l'impostazione enableAllProjectMcpServers di Claude Code (auto_trust_project_servers) e un file di configurazione che contiene insieme un server che legge testi scritti da altri (pagine web, e-mail, chat, issue) e un server in grado di eseguire comandi o modificare file, la combinazione di cui ha bisogno la prompt injection indiretta (riconosciuta dai nomi di pacchetto noti, senza vedere il contenuto degli strumenti del server; injection_exposure). Non ha argomenti, è di sola lettura e non invia nulla alla rete. Non restituisce mai valori di ambiente o di intestazioni, argomenti o segreti, solo nomi di server, il nome base di un comando, un host di URL e, per un semplice nome di registro, il nome del pacchetto o dell'immagine. I file che non è stato possibile analizzare sono elencati in unreadableFiles e non sono stati verificati.
audit_agent_setup Mac / Linux Legge i file di istruzioni e le skill dati agli agenti IA (CLAUDE.md, commands, agents e skills in ~/.claude, più ~/.codex, ~/.cursor/rules, ~/.gemini, ~/.agents, ~/.openclaw, e CLAUDE.md, AGENTS.md, .cursorrules e simili nelle cartelle di progetto registrate) e l'openclaw.json di OpenClaw, e segnala contenuti e impostazioni a rischio. Nei file di istruzioni e di skill segnala frasi nascoste in caratteri tag Unicode invisibili (hidden_tag_characters), caratteri a larghezza zero e di controllo della direzione (invisible_characters), formulazioni che annullano istruzioni precedenti o nascondono qualcosa all'utente (override_instruction), scarica-ed-esegui come curl … | sh (remote_script_exec), decodifica-ed-esegui (encoded_payload_exec), riferimenti ad archivi di chiavi e credenziali (credential_access) accanto a un invio o a un servizio di raccolta (credential_exfil_shape, exfil_endpoint), impostazione di meccanismi persistenti (persistence_instruction), codice compilato dentro una skill (skill_precompiled_code) e file scrivibili da altri (agent_file_writable). Ciò che si trova in un commento HTML è valutato più alto, perché una pagina renderizzata lo nasconde. Per OpenClaw segnala autenticazione disattivata (openclaw_auth_disabled), un'attesa raggiungibile dalla rete (openclaw_wide_bind), un token sotto i 24 caratteri (openclaw_weak_token), un'origine jolly (openclaw_origin_wildcard), interruttori dangerously… attivi (openclaw_dangerous_flag), un elenco di proxy che si fida di tutti (openclaw_broad_trusted_proxy, openclaw_proxy_trust_loosened), una politica di DM o di gruppo aperta a chiunque (openclaw_open_dm), mDNS in full (openclaw_mdns_full), rilievi di autodiagnosi nascosti (openclaw_audit_suppressed) e permessi troppo ampi (openclaw_loose_permissions). Ogni regola è deterministica: una corrispondenza significa «una persona dovrebbe leggere questa riga», non «malevolo». Non accetta argomenti, è di sola lettura e non invia nulla alla rete. Non restituisce mai il contenuto dei file né segreti (un token è riportato solo come lunghezza), ma solo un nome di regola, un numero di riga, un host di URL e un percorso di chiave di configurazione. I file non leggibili sono elencati in unreadableFiles e non sono stati verificati.
run_package_cve_scan Mac / Linux Confronta i pacchetti installati (Mac: Homebrew / Linux: dpkg, dnf, zypper, pacman) con una mappa CVE locale. Non avviene alcuna comunicazione di rete. Su Linux, se l'elenco dei pacchetti non può essere letto o scade il tempo, non viene riportato «nessuna corrispondenza»; complete diventa false e incompleteReason indica il motivo (un risultato incompleto non è un risultato pulito). Su Ubuntu (20.04, 22.04, 24.04, 26.04) usa i dati propri di Ubuntu, confronta per nome e versione del pacchetto sorgente e controlla solo le CVE con CVSS 7,0 o superiore per cui Ubuntu ha già pubblicato una correzione, quindi «nessuna corrispondenza» non significa che non esistano CVE note. Il risultato aggiunge ecosystem e release, ogni rilevamento riporta binary (il nome del pacchetto binario installato) e le correzioni disponibili solo con Ubuntu Pro hanno proOnly. Le derivate di Ubuntu (Linux Mint, Pop!_OS e altre) e le versioni non supportate restituiscono complete = false con il motivo in incompleteReason, senza passare ai dati di Debian.
run_package_cve_scan_languages Mac / Linux Confronta i file di lock delle dipendenze di npm, PyPI, crates.io, RubyGems, Packagist, Go e Maven con la stessa mappa CVE locale. Non avviene alcuna comunicazione di rete.
run_package_lifecycle_script_scan Mac / Linux Elenca gli script del ciclo di vita (preinstall / install / postinstall / prepare) dei package.json presenti nel node_modules di un progetto. Legge soltanto file: non esegue nulla e non invia nulla in rete. Ogni voce riporta un indicatore orientativo per i pattern di aspetto rischioso (come curl|sh), ma si tratta di un inventario, non di un verdetto sulla dannosità di un pacchetto.
run_typosquat_scan Mac / Linux Verifica se il nome di una dipendenza nel package.json di un progetto differisce di uno o due soli caratteri da un pacchetto npm noto (possibile typosquatting). Legge solo file locali e non contatta alcun registro. È un'euristica puramente indicativa: sono possibili falsi positivi.
run_npm_audit_signatures Mac / Linux Questo strumento interroga il registro npm (registry.npmjs.org). Esegue npm audit signatures per verificare firme e provenienza dei pacchetti installati. È disattivato per impostazione predefinita e si rifiuta di funzionare finché non lo attivi nelle impostazioni (solo Pro su Mac).
get_quarantine_status Mac / Linux Restituisce il contenuto del vault di quarantena: percorso originale, nome della minaccia rilevata, data e dimensione.
get_canary_status Mac / Linux Restituisce lo stato dei file esca anti-ransomware (canary) e fino ai 50 incidenti rilevati più recenti.
get_ransomware_entropy_guard_status Mac Restituisce se il rilevamento generico del ransomware basato sull'entropia è attivo e i suoi recenti incidenti di burst di entropia.
get_honeytoken_status Mac Restituisce se la guardia honeytoken delle credenziali è attiva e i suoi eventi recenti di rilevamento accessi.
get_browser_credential_watch_status Mac Restituisce se il monitoraggio dell'accesso alle credenziali del browser è attivo e i suoi eventi recenti di rilevamento accessi.
get_forensic_evidence_bundles Mac Restituisce l'elenco dei pacchetti di prove forensi (elenco processi, connessioni di rete, file modificati e simili) salvati quando è scattato un Air-Gap di emergenza.
get_ransomware_recovery_snapshots Mac Restituisce gli snapshot APFS di recupero (precedenti al danno, di rilevamento, manuali), quello consigliato per il ripristino, lo stato della modalità di conservazione e l'intervallo degli snapshot. Uno snapshot di rilevamento può contenere già file cifrati. Solo Pro.
search_exec_events Mac / Linux Cerca nella registrazione delle esecuzioni di processi. Su Mac usa il registro basato su eslogger; su Linux quello del registratore di esecuzioni (con una catena di hash che rende rilevabili le manomissioni). È possibile filtrare per percorso, argomenti e altro, e il risultato indica anche lo stato del registratore e se il registro è stato leggibile. Solo Pro su Mac. Il registro Linux è accessibile solo a root, quindi il server MCP deve essere eseguito come root.
get_process_tree Mac / Linux Ricostruisce dal registro delle esecuzioni gli antenati e i discendenti di un dato processo. Sono noti solo i processi effettivamente visti dal registratore. Solo Pro su Mac.
get_port_anomaly_incidents Mac / Linux Restituisce lo stato della baseline della protezione dalle porte anomale, le porte attualmente bloccate in automatico e fino ai 50 incidenti più recenti. La risposta indica esplicitamente che le porte attualmente bloccate sono un'istantanea dello stato attuale, priva di timestamp, distinta dalla cronologia degli incidenti, che invece è dotata di timestamp.
get_ssh_guard_incidents Mac / Linux Restituisce lo stato e la cronologia della guardia contro la forza bruta SSH: se banna o si limita a rilevare (per esempio perché un altro strumento protegge già sshd), le origini bannate al momento con il tempo residuo e fino ai 200 record più recenti (un'origine è stata bannata, è stata rilevata senza ban, oppure un login è riuscito dopo una serie di fallimenti della stessa origine). I nomi utente provati non vengono salvati su Linux (solo quanti) e su Mac vengono restituiti ripuliti, fino a 5. Il Mac restituisce anche i login SSH recenti (origine, utente, metodo, impronta della chiave). Sola lettura: nessuno strumento MCP rimuove un ban. Su Linux l'elenco dei ban è leggibile solo da root, quindi chi chiama senza root riceve solo il numero. Linux: la Server Edition e la Client Edition finché sshd è in esecuzione. Mac: solo Pro.
get_port_scan_incidents Linux Restituisce il registro delle scansioni di porte (ricognizione) rilevate contro questo dispositivo: ogni IP di origine che ha raggiunto molte porte distinte in poco tempo, quante porte ha toccato (con un campione) e se è stato anche bloccato automaticamente e per quanto tempo.
get_runtime_threat_status Mac Indica se questo Mac è isolato (Air-Gap) a causa di un rilevamento malware di XProtect e qual è l'incidente che lo ha attivato. È il primo strumento da consultare durante un Air-Gap attivo.
verify_fim Linux Ricalcola l'hash di circa 150 file di sistema critici e lo confronta con la baseline salvata per verificarne l'integrità. Se eseguito come root, il risultato contiene anche un campo aggiunto, recentIntrusionContext: per ogni modifica recente, il processo che l'ha fatta (account, eseguibile, comando) e l'accesso SSH a cui appartiene (origine, ora di accesso, metodo di autenticazione), oppure il motivo per cui non è stato possibile scoprirlo.
get_file_scan_guard_status Linux (Server) Restituisce la configurazione della guardia di scansione dei file (ClamAV) e lo stato del Vault di quarantena che utilizza (strumento per la Server Edition; non è la configurazione della guardia antimalware dell'edizione Client).
get_ebpf_incidents Linux (Server) Restituisce lo stato di isolamento attuale della guardia runtime eBPF e la cronologia degli incidenti all'origine. Nella Server Edition ogni record riporta anche il tempo dal rilevamento alla risposta in millisecondi (detect_to_receive_ms, receive_to_action_ms, detect_to_action_ms), e il risultato include lo stato dell'heartbeat di Falco (heartbeat).
get_resource_guard_incidents Linux (Server) Restituisce la cronologia della guardia contro l'esaurimento delle risorse e le anomalie di processo (memory leak, crash loop), con un livello di confidenza (questa guardia appartiene alla Server Edition; nell'edizione Client non è in esecuzione, quindi il risultato è sempre vuoto).
get_incident_timeline Mac / Linux Unisce i rilevamenti di tutte le guardie in un'unica linea temporale, con la genealogia dei processi e i tag MITRE ATT&CK (sperimentale).
get_network_history Mac Registra, per ogni rete Wi-Fi memorizzata, quanti dispositivi gateway distinti hanno risposto e quando è stata vista l'ultima volta, segnalando altre reti con nomi sospettosamente simili (possibili Evil Twin). Permette anche di sapere se ci si è già connessi in passato a una determinata rete.
get_vpn_status Linux (Client) Indica se la VPN sulle reti non affidabili (WireGuard / Tailscale) è attiva, se il tunnel è realmente stabilito e se il kill switch anti-fuga è armato.
get_link_guard_status Linux (Client) Restituisce lo stato di attivazione di Link Guard (blocco di phishing / siti malevoli tramite ispezione DNS / TLS SNI / host HTTP), la sua modalità (disattivato / avviso / blocco), la lista consentiti e gli eventi di blocco/avviso degli ultimi 7 giorni.
get_air_gap_status Linux (Client) Indica se l'isolamento di emergenza Air-Gap (tutto il traffico bloccato) è attivo in questo momento, il motivo che lo ha attivato, il tempo residuo prima del rilascio automatico e tutti i processi attualmente congelati con SIGSTOP.
get_sharing_services_status Linux (Client) Restituisce l'impostazione che arresta automaticamente SSH, Samba e la condivisione dello schermo (GNOME Remote Desktop / VNC / xrdp) sulle reti non affidabili, e lo stato reale dei servizi effettivamente arrestati e ripristinati.
get_bluetooth_guard_status Linux (Client) Restituisce l'impostazione di Bluetooth Guard che disattiva forzatamente la rilevabilità sulle reti non affidabili, e lo stato reale del controller (acceso, rilevabile, dispositivi connessi).
get_usb_guard_status Linux (Client) Restituisce le impostazioni della guardia di archiviazione USB e della guardia tastiera BadUSB (l'input viene soppresso solo tramite evdev — un dispositivo non viene mai deautorizzato a livello di kernel), insieme ai dispositivi connessi e a quelli in attesa di approvazione.
get_fleet_status Linux Restituisce lo stato lato dispositivo di Fleet (gestione centralizzata per organizzazione, funzione in preparazione per RoamSwitch Business): se il dispositivo è registrato, quale versione di policy è applicata, lo stato dei check-in e altro. Non restituisce mai codici di registrazione, token, chiavi o dati di licenza. Fleet non ha alcun canale di comandi remoti: un amministratore non può isolare né gestire questo dispositivo.
get_sensor_audit_results Mac / Linux Restituisce i risultati degli audit attivi richiesti a un RoamSwitch Sensor associato (un prodotto separato che gira sul tuo hardware nella stessa LAN): in attesa, completato o non riuscito. Aggiunge la prospettiva dall'esterno su ciò che è realmente raggiungibile, invisibile dall'interno del dispositivo. Con questo strumento non è possibile richiedere un audit né associare un Sensor.

Tra gli strumenti sopra, quelli che leggono solo lo stato locale (quarantena, canary, anomalie delle porte, minacce runtime, cronologia notifiche, timeline degli incidenti, cronologia di rete, stato di VPN / Link Guard / Air-Gap / servizi di condivisione / Bluetooth / guardia USB, ecc.) continuano a funzionare anche quando RoamSwitch ha isolato la rete d'emergenza a seguito di una minaccia rilevata. Abbinati a un LLM locale, permettono di indagare sulla causa sul momento durante l'isolamento.

Codici di motivo di verify_security_findings. Su entrambe le piattaforme compaiono failing (ancora applicabile), passing (nessun problema), not_applicable (qui non applicabile per progetto), not_verifiable (non confermabile in questo modo) e unknown_check_id (il checkId indicato non esiste). Solo su Mac vengono restituiti helper_unavailable (l'helper privilegiato non è connesso), gateway_unknown (non è stato possibile identificare il gateway), no_baseline (impossibile confrontare con il MAC del gateway di una rete attendibile registrata; se non ne è registrata alcuna, il monitoraggio ARP via MCP restituisce sempre questo valore), not_measured (l'elenco delle porte non è mai stato misurato; compare solo nel rapporto in-app e normalmente non via MCP), location_unavailable (la lettura del Wi-Fi richiede il permesso di localizzazione) e tool_failed (un comando di sistema non ha restituito nulla o il suo output non permetteva di stabilire se fosse attivo o disattivo, per esempio SIP con enabled (Custom Configuration)). Solo su Linux vengono restituiti not_root (non è in esecuzione come root, quindi non può leggere i dati), daemon_unknown (lo stato del daemon non è disponibile), tool_missing (manca un comando necessario), tool_timeout (un comando esterno non ha terminato in tempo ed è stato interrotto), docker_unreachable (Docker non è raggiungibile) e unconfirmed (il controllo stesso ha contrassegnato il risultato come non confermato). Con inconclusive non si può né confermare né escludere che la correzione abbia funzionato, quindi ripristini il privilegio o la connessione mancante e richiami di nuovo lo strumento.

Solo run_npm_audit_signatures (registro npm), facoltativo e riservato a Pro su Mac, comunica con un host esterno. run_active_vuln_scan (disattivato per impostazione predefinita) sonda soltanto 127.0.0.1, e su Mac get_exposed_ports si limita a inviare un HTTP GET per ogni porta esposta a 127.0.0.1 per controllare le intestazioni. Per ricavare l'indirizzo MAC del gateway, gli strumenti di diagnostica su Mac possono inviare un ping ICMP, di norma uno (pochi se il MAC non si risolve), al gateway della LAN. Su Linux, get_security_report e verify_security_findings non inviano nulla alla LAN e leggono il gateway solo dalle cache locali (altri strumenti che risolvono di nuovo il MAC del gateway, come get_guard_status, possono inviare un ping).

Casi d'uso pratici per scenario

Come interrogare l'IA nel lavoro e nello sviluppo quotidiano

Esempi pratici di prompt e risposte dell'IA per l'audit delle porte in sviluppo locale, controlli di sicurezza su Wi-Fi pubblici, analisi di URL di phishing e altro. Copia i prompt direttamente nell'IA.

🛠️

Audit esposizione porte server locali e DB

Sviluppo Web / Docker

All'avvio di Next.js, Vite, Python, Docker, Redis, ecc., chiedi all'IA di verificare se le porte sono inavvertitamente esposte su 0.0.0.0 a tutta la rete locale.

💬 Esempio di prompt per l'IA
Esegui un audit delle porte esposte per i server di sviluppo e container attualmente attivi sul mio Mac. Ci sono porte pericolose associate a 0.0.0.0 ed esposte alla LAN?
⚡ Tool: get_exposed_ports
Risultati dell'audit delle porte:
• 🚨 Porta 3000 (node / Next.js): Esposta esternamente su 0.0.0.0:3000
• 🚨 Porta 6379 (redis-server): Esposta esternamente su 0.0.0.0:6379 (senza autenticazione; accessibile da altri dispositivi sullo stesso Wi-Fi)
• ✅ Porta 5432 (postgres): Associata a 127.0.0.1:5432 (solo localhost / sicuro)
💡 Raccomandazione: Modifica la configurazione di Redis impostando bind 127.0.0.1 e avvia Next.js con npm run dev -- -H 127.0.0.1.
☕

Controllo di sicurezza alla connessione a Wi-Fi pubblico

Smart Working / Wi-Fi pubblico

Subito dopo esserti connesso a una rete Wi-Fi pubblica in un bar o in hotel, chiedi all'IA una diagnosi completa per verificare se firewall, modalità invisibile e protezione ARP sono attivi.

💬 Esempio di prompt per l'IA
Mi sono appena connesso al Wi-Fi pubblico di un bar. Esegui una diagnosi di sicurezza completa per verificare se posso lavorare in sicurezza. Qual è lo stato del firewall e della protezione ARP spoofing?
⚡ Tools: get_security_report, get_guard_status
Riepilogo diagnosi di sicurezza Mac:
• 🛡️ Punteggio globale: 88 / 100 (Grade: A-)
• 📡 Stato rete: Rete non attendibile (Modalità mobilità / filtro pacchetti attivo)
• ✅ Firewall / Modalità invisibile: Abilitato (blocca i pacchetti di scansione esterni)
• ✅ Isolamento automatico anti-ARP spoofing: Abilitato (isolamento automatico in caso di intercettazione)
• ⚠️ Azione consigliata: La crittografia disco FileVault è disabilitata. Si consiglia di abilitarla in Impostazioni di Sistema.
✉️

Analisi dei link sospetti in email e chat

Anti-phishing / Audit URL

Fai ispezionare istantaneamente all'IA i link ricevuti via email o nei messaggi Slack/Discord interamente in locale, senza inviare l'URL a server esterni (Zero Telemetry).

💬 Esempio di prompt per l'IA
Ho ricevuto un'email con il link 'https://apple.com.login-auth-verify.xyz/account'. Analizza la sicurezza di questo URL prima che io ci clicchi sopra.
⚡ Tool: audit_url_safety
Report di sicurezza URL (Analisi 100% locale):
• 🚨 Livello di rischio: Dangerous (Pericoloso / Punteggio: 8/100)
• ❌ Sottodominio ingannevole: Finge di essere apple.com, ma il dominio reale è login-auth-verify.xyz.
• ❌ TLD ad alto rischio: .xyz è frequentemente impiegato per campagne di phishing temporanee.
• 🔒 Zero Telemetry: Ispezionato localmente sul tuo Mac senza alcun trasferimento di dati all'esterno.
• 🛑 Raccomandazione: Non aprire assolutamente il link, elimina e segnala l'email.
🤖

Salvaguardia di sicurezza autonoma durante la programmazione

Flussi di lavoro degli agenti IA

Quando affidi a Claude Code o Antigravity la creazione di servizi o l'esecuzione di suite di test, fai eseguire autonomamente gli strumenti MCP come protezione per evitare aperture accidentali di porte.

💬 Esempio di prompt per l'IA
Configura le API di backend e l'ambiente di test del progetto. Al termine, usa RoamSwitch MCP per verificare che non ci siano porte esterne aperte prima di confermare il completamento.
⚡ Tool: get_exposed_ports
Riepilogo esecuzione autonoma dell'agente IA:
1. Server Fastify avviato sulla porta 8080.
2. 🔍 Verifica RoamSwitch MCP: Eseguito get_exposed_ports e confermato che la porta è rigorosamente associata a 127.0.0.1:8080 (solo localhost).
3. Ambiente sicuro verificato. Proseguo con i test di integrazione.
📋

Report di sicurezza giornaliero ed esportazione Markdown

Audit e generazione report

Genera con un clic un report sintetico e strutturato in Markdown sullo stato di sicurezza del Mac per la conformità aziendale, verifiche IT o il diario di lavoro quotidiano.

💬 Esempio di prompt per l'IA
Genera un report riassuntivo in formato Markdown dello stato di sicurezza attuale del mio Mac per il mio diario di lavoro, includendo l'elenco dei punti di miglioramento.
⚡ Tools: get_security_report, get_guard_status
Esempio di report Markdown generato:
## 🛡️ Mac Security Health Report (2026-08-28)
- Punteggio globale: 96 / 100 (Grade: A+)
- Stato difese principali:
  • FileVault: ✅ Abilitato (APFS Encrypted)
  • SIP: ✅ Abilitato
  • Firewall / Modalità invisibile: ✅ Abilitato
  • Isolamento automatico ARP: ✅ Abilitato
  • Protezione minacce DNS: ✅ Abilitato (Quad9 Secure DNS)
- Azioni consigliate: Nessuna (eccellente stato di sicurezza)
🛡️

Verifica dello stato dei guard USB, Bluetooth e download

Protezione fisica e dei dispositivi

Verifica che le protezioni in tempo reale come l'avviso di memorie USB sconosciute, il monitoraggio Bluetooth e l'analisi dei file scaricati siano attive.

💬 Esempio di prompt per l'IA
I moduli di guardia (protezione USB, Bluetooth, minacce DNS e download Web/Mail) funzionano tutti regolarmente?
⚡ Tool: get_guard_status
Stato delle guardie RoamSwitch:
• 🛡️ Livello di protezione attivo: Balanced (Modalità standard di protezione)
• ✅ Guardia memoria USB: Attivo (avvisa/blocca memorie USB non registrate)
• ✅ Guardia Bluetooth: Attivo (monitora la vicinanza di dispositivi non associati)
• ✅ Protezione download Web/Mail: Attivo (scansione automatica ClamAV dei file in quarantena)
• ✅ Protezione minacce DNS: Attivo (blocca domini malevoli C2 e phishing)
💡

Uso dell'app e spiegazione dei messaggi di avviso

Guida funzioni / Consulenza avvisi

Consulta l'IA su qualsiasi notifica, avviso o dettaglio tecnico (filtro pacchetti, FSEvents, quarantena ClamAV, protezione USB, ecc.) e ricevi consigli ufficiali.

💬 Modello A: Blocco porta dev e configurazione sicura (Next.js / Sviluppo Web)
RoamSwitch ha notificato '🚪 Porta sconosciuta (3000) bloccata'. È il mio server Next.js. Come configurarlo per l'esecuzione locale sicura?
⚡ Tool: get_app_help / Resource: roamswitch://docs/settings-guide
Risposta dalla base di conoscenza RoamSwitch:
• 🚪 Motivo: Il server si è avviato su 0.0.0.0 (aperto alla LAN). RoamSwitch ha bloccato gli accessi esterni in entrata.
• ⚙️ Soluzione:
  1. Consigliato: Avvia con npm run dev -- -H 127.0.0.1.
  2. Condivisione LAN: Consenti la porta 3000 in Port Audit.
💬 Modello B: Analisi di sicurezza dopo isolamento d'emergenza (dopo passaggio a hotspot)
RoamSwitch ha isolato la rete per '🚨 ARP Spoofing Rilevato' in un bar. Sono passato all'hotspot dello smartphone. Cosa è successo e cosa devo fare ora?
⚡ Tool: get_app_help / Resource: roamswitch://docs/alerts-and-messages
Risposta dalla base di conoscenza RoamSwitch:
• 🔍 Analisi dell'incidente: Un dispositivo ha inviato pacchetti ARP falsificati per impersonare il router (attacco Man-in-the-Middle).
• 🛡️ Difesa automatica: RoamSwitch ha isolato immediatamente la connessione in modalità air-gap per bloccare le intercettazioni.
• 🛑 Raccomandazione: Non riconnetterti a quel Wi-Fi pubblico. Continua a lavorare in sicurezza tramite hotspot.
💬 Modello C: Espulsione USB e registrazione sicura nella whitelist
RoamSwitch ha notificato '🔌 Memoria USB non registrata espulsa'. È la mia chiavetta USB. Come posso registrarla in sola lettura?
⚡ Tool: get_app_help / Resource: roamswitch://docs/settings-guide
Risposta dalla base di conoscenza RoamSwitch:
• 🔌 Motivo espulsione: Espulsa automaticamente per prevenire esfiltrazioni di dati e attacchi BadUSB.
• ⚙️ Procedura: 1. Apri 'Impostazioni' dall'icona RoamSwitch → 2. Seleziona 'Protezione USB' → 3. Fai clic su 'Aggiungi da dispositivi connessi' → 4. Imposta il permesso su 'Sola lettura (Consigliato)' e salva.
💬 Modello D: Assistente disconnesso e ripristino del demone
La barra dei menu mostra '⚠️ Assistente non connesso'. Come posso ripristinarlo?
⚡ Tool: get_app_help / Resource: roamswitch://docs/troubleshooting
Risposta dalla base di conoscenza RoamSwitch:
• ⚠️ Causa: La comunicazione XPC con il demone privilegiato RoamSwitchHelper è temporaneamente interrotta.
• 🛠️ Ripristino:
  1. Apri Terminale e riavvia l'assistente:
    sudo killall RoamSwitchHelper
  2. Riavvia l'applicazione RoamSwitch.
  3. In 'Impostazioni di Sistema' > 'Generali' > 'Elementi login ed estensioni', verifica che RoamSwitchHelper sia abilitato.
🧯

Triage offline con un LLM locale + MCP dopo un blocco di emergenza Air-Gap

Risposta agli incidenti / Triage con LLM locale

Quando si attiva Air-Gap (blocco di rete di emergenza) — ad esempio al rilevamento di un ransomware —, viene interrotta anche la comunicazione con i client IA cloud come Claude Desktop. Ma il server MCP di RoamSwitch continua a funzionare, poiché comunica solo tramite una pipe di processo locale; abbinalo a un LLM locale (ad esempio tramite Ollama) e potrai continuare la diagnosi senza alcun accesso alla rete. Il rilevamento di anomalie nei log, il rilevamento di manomissioni e il confronto con le CVE note sono interamente locali: è esattamente il momento per cui sono stati progettati, quando la rete stessa non c'è più.

💬 Esempio di prompt per l'IA
La protezione anti-ransomware di RoamSwitch si è attivata e l'host è ora in stato Air-Gap (blocco di rete di emergenza). Non c'è accesso alla rete, ma analizza la situazione attuale: quando è successo, quale processo e quali file sono stati coinvolti, ci sono manomissioni nei file di sistema, attività di log sospette correlate e segni che sia stata sfruttata una vulnerabilità nota.
⚡ Tools: get_canary_status, get_port_anomaly_incidents, audit_security_logs, get_quarantine_status (Linux Server: get_ebpf_incidents / Mac: get_runtime_threat_status)
Risultati del triage offline (nessuna attività di rete):
• 🐛 Canary attivato: rilevata la cifratura di /var/www/decoy_invoice.pdf alle 14:32:07; il processo suspicious_enc (PID 8823) è stato immediatamente bloccato e isolato
• 🔌 Monitoraggio delle porte (Port Anomaly Guard): nessun nuovo blocco automatico nella cronologia degli incidenti — l'attivazione del canary sembra essere l'unico punto di ingresso, nessuna porta backdoor aggiuntiva aperta
• 📜 Correlazione dei log (rilevamento anomalie): un picco di fallimenti di autenticazione sshd inizia 12 minuti prima dell'attivazione (picco di frequenza rilevato, Z-score 5,2) — un possibile punto di ingresso
• 🔒 Rilevamento manomissioni (FIM): nessuna manomissione riscontrata su ~150 percorsi di sistema critici — nessun indizio che la violazione abbia raggiunto il livello di sistema
• 📦 Verifica CVE note: confrontato con la mappa CVE locale — nessuna vulnerabilità nota critica nei pacchetti interessati
💡 Azione consigliata: la violazione è probabilmente confinata alla web root. Prima di ripristinare da un backup, controlla individualmente anche gli altri file di quella directory.
Domande frequenti

Sull'integrazione MCP

Q. È vero che non comunica mai con l'esterno?

A. Esatto. Il server MCP è un processo locale avviato direttamente dal tuo client IA tramite standard I/O (stdio) e non invia alcuna telemetria. I risultati della diagnosi vengono calcolati sul momento, su questo Mac / Linux. Solo run_npm_audit_signatures (registro npm), facoltativo e riservato a Pro su Mac, comunica con un host esterno. run_active_vuln_scan (disattivato per impostazione predefinita) sonda soltanto 127.0.0.1, e su Mac get_exposed_ports si limita a inviare un HTTP GET per ogni porta esposta a 127.0.0.1 per controllare le intestazioni. Per ricavare l'indirizzo MAC del gateway, gli strumenti di diagnostica su Mac possono inviare un ping ICMP, di norma uno (pochi se il MAC non si risolve), al gateway della LAN. Su Linux, get_security_report e verify_security_findings non inviano nulla alla LAN e leggono il gateway solo dalle cache locali (altri strumenti che risolvono di nuovo il MAC del gateway, come get_guard_status, possono inviare un ping).

Q. Posso usarlo senza la versione Pro?

A. Su Linux tutti gli strumenti sono disponibili gratuitamente. Con la versione gratuita dell'app per Mac funzionano anche la maggior parte degli strumenti, ma quattro sono riservati a Pro e restituiscono un errore se Pro non è attivo: get_ransomware_recovery_snapshots, search_exec_events, get_process_tree e run_npm_audit_signatures. Inoltre, l'effettiva attivazione di ciascuna guardia automatica dipende anche dallo stato della licenza Pro, quindi gli strumenti possono confermare solo lo stato dell'interruttore nelle impostazioni.

Q. Quali client IA sono supportati?

A. Qualsiasi client che supporti il trasporto stdio di MCP (Model Context Protocol) dovrebbe funzionare in generale, anche oltre a quelli elencati sopra. Verificato con Claude Desktop, Claude Code, OpenAI Codex CLI, OpenCode e Antigravity.

Q. Antigravity mostra un errore «Hook Failure» o di telemetria durante l'esecuzione degli strumenti?

A. Un hook PreToolUse di plug-in esterni (come la telemetria di Google Cloud) in Antigravity potrebbe bloccare l'esecuzione. Apri ~/.gemini/config/plugins/.../hooks.json e imposta "enabled": false.

Q. Posso inviare richieste anche quando la connessione di rete è interrotta?

A. Sì, se utilizzi un LLM locale (tramite OpenCode con Ollama o LM Studio), tutto viene elaborato al 100% sul Mac / Linux e funziona offline anche durante l'isolamento d'emergenza della rete. Se utilizzi un LLM cloud (come l'API Claude), passa a una connessione sicura come hotspot prima di consultare l'IA.