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 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 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).
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
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.
• 🚨 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
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.
• 🛡️ 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
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).
• 🚨 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
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.
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
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.
## 🛡️ 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
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.
• 🛡️ 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
Consulta l'IA su qualsiasi notifica, avviso o dettaglio tecnico (filtro pacchetti, FSEvents, quarantena ClamAV, protezione USB, ecc.) e ricevi consigli ufficiali.
• 🚪 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.
• 🔍 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.
• 🔌 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.
• ⚠️ Causa: La comunicazione XPC con il demone privilegiato
RoamSwitchHelper è temporaneamente interrotta.• 🛠️ Ripristino:
1. Apri Terminale e riavvia l'assistente:
sudo killall RoamSwitchHelper2. 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
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ù.
• 🐛 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.
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.