Pergunte diretamente a assistentes de IA como o Claude sobre o estado de segurança do seu Mac / Linux
O RoamSwitch inclui um servidor MCP (Model Context Protocol) só de leitura. Ligue-o a um cliente MCP e basta perguntar, em linguagem natural, «o meu Mac / Linux está seguro neste momento?» ou «que portas estão expostas?» — obterá respostas baseadas nos diagnósticos precisos do próprio RoamSwitch, não em suposições. Não pode alternar o nível de bloqueio, isolar portas nem realizar qualquer outra ação; a comunicação com o seu cliente de IA permanece inteiramente no dispositivo através de stdio (uma extensão da nossa política Zero Telemetry).
🔒 Porque é seguro
- Só de leitura: apenas diagnósticos de segurança, monitorização de portas e verificação do estado das guardas. Não é implementada nenhuma ferramenta operacional como alternar o bloqueio, isolar portas ou ejetar dispositivos.
- Totalmente local: a comunicação com o seu cliente de IA (Claude Desktop/Code, etc.) é feita apenas via stdio e fica entre o cliente e o processo RoamSwitch no seu Mac / Linux. Nunca é enviada telemetria. Só usam a rede funcionalidades opcionais desativadas por predefinição: a verificação de vulnerabilidades, que examina apenas a sua própria máquina (127.0.0.1), e a verificação de assinaturas npm, que consulta o registo npm.
- Prevenção de erros: como não existem ferramentas operacionais, não há risco de uma injeção de prompt ou similar alterar acidentalmente a firewall ou as definições de rede.
Configuração em dois passos
1Localização do binário
Incluído na RoamSwitch.app — não é necessário descarregar ou instalar em separado.
/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer
2aPara o Claude Desktop
Adicione o seguinte a "mcpServers" em ~/Library/Application Support/Claude/claude_desktop_config.json e reinicie o Claude Desktop.
{
"mcpServers": {
"roamswitch": {
"command": "/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"
}
}
}
2bPara o Claude Code
Basta executar uma vez o seguinte comando no terminal.
claude mcp add roamswitch /Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer
2cPara o OpenAI Codex CLI
Adicione o seguinte a ~/.codex/config.toml, ou execute o comando abaixo no terminal.
[mcp_servers.roamswitch] command = "/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"
codex mcp add roamswitch -- /Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer
2dPara o OpenCode
Adicione o seguinte ao opencode.json na raiz do projeto (ou global em ~/.config/opencode/opencode.json).
{
"mcp": {
"roamswitch": {
"type": "local",
"command": ["/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"]
}
}
}
💡 Suporte para LLMs locais: Ao utilizar modelos locais via Ollama ou LM Studio, pode consultar o RoamSwitch totalmente offline, mesmo quando a rede foi isolada de emergência perante uma ameaça.
2ePara o Antigravity
Adicione o seguinte a ~/.gemini/config/mcp_config.json (ou a .agents/mcp_config.json na raiz do seu workspace).
{
"mcpServers": {
"roamswitch": {
"command": "/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"
}
}
}
* Observação: Se encontrar erros de Hook Failure ou telemetria no Antigravity CLI (agy), desative o hook definindo "enabled": false em ~/.gemini/config/plugins/.../hooks.json.
1Localização do binário
Incluído no pacote apt / rpm / AUR e instalado automaticamente em /usr/bin/roamswitch-mcp. Não é necessário nenhum download ou build separado (igual para a edição Cliente e a edição Servidor).
/usr/bin/roamswitch-mcp
O mesmo binário e os mesmos passos de configuração funcionam da mesma forma na edição Servidor (sem interface gráfica). Consulte o capítulo «Agentes de IA / Integração MCP» do manual de operação do Linux Server para mais detalhes.
2aPara o Claude Desktop
O Claude Desktop não tem uma versão oficial para Linux. Se estiver a usar uma versão não oficial (por exemplo, claude-desktop-debian), adicione o seguinte a "mcpServers" em ~/.config/Claude/claude_desktop_config.json e reinicie a aplicação.
{
"mcpServers": {
"roamswitch": {
"command": "/usr/bin/roamswitch-mcp"
}
}
}
2bPara o Claude Code
Basta executar uma vez o seguinte comando no terminal.
claude mcp add roamswitch /usr/bin/roamswitch-mcp
2cPara o OpenAI Codex CLI
Adicione o seguinte a ~/.codex/config.toml, ou execute o comando abaixo no terminal.
[mcp_servers.roamswitch] command = "/usr/bin/roamswitch-mcp"
codex mcp add roamswitch -- /usr/bin/roamswitch-mcp
2dPara o OpenCode
Adicione o seguinte ao opencode.json na raiz do projeto (ou global em ~/.config/opencode/opencode.json).
{
"mcp": {
"roamswitch": {
"type": "local",
"command": ["/usr/bin/roamswitch-mcp"]
}
}
}
💡 Suporte para LLMs locais: Ao utilizar modelos locais via Ollama ou LM Studio, pode consultar o RoamSwitch totalmente offline, mesmo quando a rede foi isolada de emergência perante uma ameaça.
2ePara o Antigravity
Adicione o seguinte a ~/.gemini/config/mcp_config.json (ou a .agents/mcp_config.json na raiz do seu workspace).
{
"mcpServers": {
"roamswitch": {
"command": "/usr/bin/roamswitch-mcp"
}
}
}
* Observação: Se encontrar erros de Hook Failure ou telemetria no Antigravity CLI (agy), desative o hook definindo "enabled": false em ~/.gemini/config/plugins/.../hooks.json.
Ferramentas só de leitura (atualmente 33 no Mac / 38 no Linux, em expansão contínua)
get_security_report
Executa uma auditoria de 18 pontos no Mac (FileVault, SIP, Gatekeeper, firewall, robustez da encriptação Wi-Fi, ARP spoofing, portas expostas, etc.) ou de 27 pontos no cliente / 34 pontos no servidor em Linux (reforço do kernel, proteção do socket Docker e de contentores privilegiados, isolamento do runtime de contentores, vulnerabilidades conhecidas, etc.), devolvendo uma pontuação e recomendações de melhoria.
get_exposed_ports
Lista todas as portas atualmente em escuta e, para as expostas externamente, devolve uma auditoria detalhada que inclui a deteção de serviços de risco conhecidos (Redis, MongoDB, etc.). No Mac, envia um HTTP GET por cada porta exposta para 127.0.0.1 para verificar os cabeçalhos.
get_guard_status
Retorna o status das proteções de portas, contenção ARP, USB, Bluetooth, downloads Web/Mail, ameaças DNS e o nível de segurança atual.
audit_url_safety
Analisa links de e-mail ou URLs da web para detectar phishing, ataques homógrafos Unicode, subdomínios enganosos e TLDs de alto risco (Zero Telemetry).
get_app_help
Pesquisa na base de conhecimento oficial do RoamSwitch abrangendo todas as funcionalidades, alertas, configurações e resolução de problemas no dispositivo para fornecer explicações e conselhos precisos.
audit_security_logs
Agrega os registos de segurança recentes (Mac: falhas de autenticação sudo, tentativas de força bruta SSH, bloqueios do Gatekeeper, deteções do XProtect, etc. / Linux: falhas de autenticação sudo, força bruta SSH, bloqueios da firewall, recusas do AppArmor, deteções do ClamAV, etc.), mascara automaticamente informação sensível como chaves de API e tokens, e devolve também os resultados da deteção de novos padrões (através de modelos de registo) e de anomalias de frequência (picos estatísticos). No Linux, se o journal não puder ser lido (por exemplo, por tempo esgotado), os zeros da contagem não significam que nada aconteceu; journalReadComplete passa a false e journalError indica o motivo.
get_notification_history
Devolve o histórico das notificações enviadas pelo RoamSwitch (anomalias de auditoria de registos de segurança, deteções de ClickFix e outras) dos últimos 7 dias, mais recentes primeiro.
roamswitch://docs/* (MCP Resources)
Recursos de documentação oficial que os clientes de IA podem carregar diretamente no contexto (funcionalidades, alertas, configurações, resolução de problemas).
Outras ferramentas apenas de leitura
| Ferramenta | Plataforma | Descrição |
|---|---|---|
audit_secrets |
Mac / Linux | Deteta chaves de API e chaves privadas expostas em texto, num ficheiro ou numa árvore de diretórios (os resultados são mascarados na saída). |
run_active_vuln_scan |
Mac / Linux | Verificação ativa de vulnerabilidades, não destrutiva e limitada a 127.0.0.1. Não contacta nenhum outro host, mas envia pedidos de rede, por isso está desativada por predefinição e requer ativação explícita nas definições. |
get_vulnerability_scan_history |
Mac / Linux | Devolve o último resultado registado e os dias decorridos (pass_age) para cada sonda que o run_active_vuln_scan registou. |
verify_security_findings |
Mac / Linux | Reavalia os itens (checkId) do get_security_report com base no estado atual e devolve um veredicto por item, stillPresent (continua a aplicar-se), resolved (resolvido, ou não aplicável por conceção) ou inconclusive (não foi possível determinar), juntamente com um código de motivo independente do idioma. Serve para confirmar, depois de uma correção, que esta teve mesmo efeito. Um item que não foi possível medir, por exemplo por falta de privilégios, porque o helper privilegiado não está ligado ou porque o Docker não está acessível, nunca é comunicado como seguro e é devolvido como inconclusive. Se omitir checkIds, são verificados todos os itens (até 50 identificadores no Mac e 64 no Linux; no Linux também é aceite isServer). No Mac, host_firewall, network_stealth_mode, gateway_arp_lock, malware_scanning, dns_threat_guard e usb_zero_trust são decididos pelas definições da app RoamSwitch, pelo que refletem essas definições e não são uma nova medição do estado real do sistema operativo. É só de leitura, não se liga a anfitriões externos e não repara nada nem altera definições. No Linux também não envia nada para a LAN e só lê o gateway das caches locais. No Mac, para obter o endereço MAC do gateway, pode enviar um ping ICMP, normalmente um (alguns se o MAC não for resolvido), ao gateway da LAN. |
audit_mcp_configs |
Mac / Linux | Lê os ficheiros de configuração MCP dos clientes de IA (Claude Desktop, Claude Code, Cursor, Windsurf, VS Code, Cline, Gemini CLI, além de .mcp.json e ficheiros semelhantes nas pastas de projeto registadas) e assinala definições de risco. Deteta ferramentas aprovadas automaticamente sem confirmação em cada chamada (auto_approve), servidores http:// em texto simples num anfitrião que não é loopback, indicados quer no campo url quer como argumento de arranque, como --server http://… (remote_plain_http), comandos de arranque que são linhas únicas de shell ou intérprete (shell_wrapper), lançadores como npx / uvx / docker run que obtêm um pacote ou imagem sem versão fixa (unpinned_package_launcher), docker run com --privileged ou com o socket do Docker ou o sistema de ficheiros raiz montados (container_host_access), as variáveis de ambiente que carregam código adicional no arranque, como LD_PRELOAD ou --require em NODE_OPTIONS (nomes sem distinção de maiúsculas, valores nunca devolvidos; code_loading_env), entradas que apontam para o HexStrike AI, um backend de ferramentas de ataque sem autenticação (hexstrike), ficheiros de configuração graváveis pelo grupo ou por outros (world_writable_config), a opção enableAllProjectMcpServers do Claude Code (auto_trust_project_servers) e um ficheiro de configuração que reúne um servidor que lê textos escritos por outras pessoas (páginas web, e-mails, conversas, issues) e um servidor que pode executar comandos ou alterar ficheiros, a combinação de que a injeção de prompt indireta precisa (reconhecida por nomes de pacote conhecidos, sem ver o conteúdo das ferramentas do servidor; injection_exposure). Não tem argumentos, é só de leitura e não envia nada para a rede. Nunca devolve valores de ambiente ou de cabeçalhos, argumentos nem segredos, apenas nomes de servidores, o nome base de um comando, um anfitrião de URL e, se for um nome de registo simples, o nome do pacote ou da imagem. Os ficheiros que não foi possível analisar ficam listados em unreadableFiles e não foram auditados. |
audit_agent_setup |
Mac / Linux | Lê os ficheiros de instruções e as skills dados a agentes de IA (CLAUDE.md, commands, agents e skills em ~/.claude, além de ~/.codex, ~/.cursor/rules, ~/.gemini, ~/.agents, ~/.openclaw, e CLAUDE.md, AGENTS.md, .cursorrules e semelhantes nas pastas de projeto registadas) e o openclaw.json do OpenClaw, e assinala conteúdo e definições de risco. Nos ficheiros de instruções e de skills reporta frases escondidas em carateres de etiqueta Unicode invisíveis (hidden_tag_characters), carateres de largura zero e de controlo de direção (invisible_characters), redação que anula instruções anteriores ou esconde algo do utilizador (override_instruction), descarregar e executar como curl … | sh (remote_script_exec), descodificar e executar (encoded_payload_exec), referências a armazéns de chaves e credenciais (credential_access) junto de um envio ou de um serviço de receção (credential_exfil_shape, exfil_endpoint), configuração de mecanismos persistentes (persistence_instruction), código compilado dentro de uma skill (skill_precompiled_code) e ficheiros que outros podem escrever (agent_file_writable). O que estiver dentro de um comentário HTML é avaliado mais alto, porque uma página renderizada o esconde. Para o OpenClaw reporta autenticação desativada (openclaw_auth_disabled), uma escuta acessível a partir da rede (openclaw_wide_bind), um token com menos de 24 carateres (openclaw_weak_token), uma origem universal (openclaw_origin_wildcard), interruptores dangerously… ligados (openclaw_dangerous_flag), uma lista de proxies que confia em todos (openclaw_broad_trusted_proxy, openclaw_proxy_trust_loosened), uma política de mensagens diretas ou de grupo aberta a qualquer pessoa (openclaw_open_dm), mDNS em full (openclaw_mdns_full), resultados de autodiagnóstico ocultos (openclaw_audit_suppressed) e permissões demasiado largas (openclaw_loose_permissions). Cada regra é determinística: uma correspondência significa «uma pessoa deveria ler esta linha», não «malicioso». Não aceita argumentos, é só de leitura e não envia nada para a rede. Nunca devolve o conteúdo dos ficheiros nem segredos (um token é reportado apenas pelo comprimento), apenas um nome de regra, um número de linha, um anfitrião de URL e um caminho de chave de configuração. Os ficheiros que não foi possível ler ficam em unreadableFiles e não foram auditados. |
run_package_cve_scan |
Mac / Linux | Compara os pacotes instalados (Mac: Homebrew / Linux: dpkg, dnf, zypper, pacman) com um mapa de CVE local. Não ocorre qualquer comunicação de rede. No Linux, se a lista de pacotes não puder ser lida ou o tempo se esgotar, não é comunicado «sem correspondências»; complete passa a false e incompleteReason indica o motivo (um resultado incompleto não é um resultado limpo). No Ubuntu (20.04, 22.04, 24.04, 26.04) usa os dados próprios do Ubuntu, compara por nome e versão do pacote de origem e verifica apenas as CVE com CVSS 7,0 ou superior para as quais o Ubuntu já publicou uma correção, pelo que «sem correspondências» não significa que não existam CVE conhecidas. O resultado acrescenta ecosystem e release, cada deteção traz binary (o nome do pacote binário instalado) e as correções disponíveis apenas com o Ubuntu Pro têm proOnly. As derivadas do Ubuntu (Linux Mint, Pop!_OS e outras) e as versões não suportadas devolvem complete = false com o motivo em incompleteReason, sem mudar para os dados do Debian. |
run_package_cve_scan_languages |
Mac / Linux | Compara os ficheiros de bloqueio de dependências do npm, PyPI, crates.io, RubyGems, Packagist, Go e Maven com o mesmo mapa de CVE local. Não ocorre qualquer comunicação de rede. |
run_package_lifecycle_script_scan |
Mac / Linux | Lista os scripts de ciclo de vida (preinstall / install / postinstall / prepare) dos package.json existentes no node_modules de um projeto. Apenas lê ficheiros: não executa nada nem envia nada pela rede. Cada entrada traz um indicador orientativo para padrões de aspeto arriscado (como curl|sh), mas é um inventário, não um veredicto sobre se um pacote é malicioso. |
run_typosquat_scan |
Mac / Linux | Verifica se o nome de alguma dependência no package.json de um projeto difere apenas um ou dois carateres de um pacote npm conhecido (possível typosquatting). Lê apenas ficheiros locais e nunca contacta um registo. É uma heurística meramente orientativa, pelo que são possíveis falsos positivos. |
run_npm_audit_signatures |
Mac / Linux | Esta ferramenta consulta o registo npm (registry.npmjs.org). Executa npm audit signatures para verificar as assinaturas e a proveniência dos pacotes instalados. Está desativada por predefinição e recusa-se a executar até ser ativada nas definições (apenas Pro no Mac). |
get_quarantine_status |
Mac / Linux | Devolve o conteúdo do cofre de quarentena: caminho original, nome da ameaça detetada, data de quarentena e tamanho. |
get_canary_status |
Mac / Linux | Devolve o estado dos ficheiros-isco anti-ransomware (canary) e até aos 50 incidentes detetados mais recentes. |
get_ransomware_entropy_guard_status |
Mac | Devolve se a deteção genérica de ransomware baseada em entropia está ativada e os seus incidentes recentes de rajada de entropia. |
get_honeytoken_status |
Mac | Devolve se a proteção de honeytokens de credenciais está ativada e os seus eventos recentes de deteção de acesso. |
get_browser_credential_watch_status |
Mac | Devolve se a monitorização de acesso a credenciais do navegador está ativada e os seus eventos recentes de deteção de acesso. |
get_forensic_evidence_bundles |
Mac | Devolve a lista de pacotes de evidências forenses (lista de processos, ligações de rede, ficheiros modificados, etc.) guardados quando um Air-Gap de emergência foi acionado. |
get_ransomware_recovery_snapshots |
Mac | Devolve os snapshots APFS de recuperação (anteriores ao dano, de deteção, manuais), o recomendado para recuperar, o estado do modo de retenção e o intervalo dos snapshots. Um snapshot de deteção pode já conter ficheiros cifrados. Apenas Pro. |
search_exec_events |
Mac / Linux | Pesquisa o registo de execuções de processos. No Mac consulta o registo baseado em eslogger; no Linux, o do gravador de execuções (com uma cadeia de hashes que torna detetável qualquer alteração). É possível filtrar por caminho, argumentos e mais, e o resultado indica também o estado do gravador e se o registo pôde ser lido. Apenas Pro no Mac. O registo do Linux é só para root, pelo que o servidor MCP tem de correr como root. |
get_process_tree |
Mac / Linux | Reconstrói, a partir do registo de execuções, os ascendentes e descendentes de um dado processo. Só são conhecidos os processos que o gravador chegou a ver. Apenas Pro no Mac. |
get_port_anomaly_incidents |
Mac / Linux | Devolve o estado da linha de base da proteção contra portas anómalas, as portas atualmente bloqueadas automaticamente e até aos 50 incidentes mais recentes. A resposta indica explicitamente que as portas atualmente bloqueadas são uma captura do estado atual, sem marca temporal, distinta do histórico de incidentes, que tem marca temporal. |
get_ssh_guard_incidents |
Mac / Linux | Devolve o estado e o histórico da guarda contra força bruta SSH: se bloqueia ou apenas deteta (por exemplo, porque outra ferramenta já protege o sshd), as origens bloqueadas neste momento com o tempo restante e até aos 200 registos mais recentes (uma origem foi bloqueada, foi detetada sem bloqueio, ou um início de sessão teve êxito depois de uma série de falhas da mesma origem). Os nomes de utilizador experimentados não são guardados no Linux (apenas quantos) e no Mac são devolvidos higienizados, até 5. O Mac devolve ainda os inícios de sessão SSH recentes (origem, utilizador, método, impressão digital da chave). Só de leitura: nenhuma ferramenta MCP levanta um bloqueio. No Linux a lista de bloqueios só pode ser lida por root, pelo que quem chama sem root recebe apenas o número. Linux: a Server Edition e a Client Edition enquanto o sshd estiver em execução. Mac: apenas Pro. |
get_port_scan_incidents |
Linux | Devolve o registo das análises de portas (reconhecimento) detetadas contra este dispositivo: cada IP de origem que alcançou muitas portas distintas num curto período, quantas portas tocou (com uma amostra) e se foi também bloqueado automaticamente e durante quanto tempo. |
get_runtime_threat_status |
Mac | Indica se este Mac está isolado (Air-Gap) devido a uma deteção de malware do XProtect e qual o incidente que a desencadeou. É o primeiro a consultar durante um Air-Gap ativo. |
verify_fim |
Linux | Volta a calcular o hash de cerca de 150 ficheiros críticos do sistema e compara-o com a linha de base guardada para verificar a integridade. Quando executada como root, o resultado inclui também um campo adicionado, recentIntrusionContext: para cada alteração recente, o processo que a fez (conta, executável, comando) e o início de sessão SSH a que pertence (origem, hora do início de sessão, método de autenticação), ou o motivo pelo qual não foi possível apurá-lo. |
get_file_scan_guard_status |
Linux (Server) | Retorna a configuração do File Scan Guard (ClamAV) e o estado do Vault de quarentena que ele usa (ferramenta da edição Server; não informa as configurações do guarda de malware da edição Client). |
get_ebpf_incidents |
Linux (Server) | Devolve o estado de isolamento atual da guarda de execução eBPF e o historial de incidentes que lhe deu origem. Na Server Edition cada registo traz também o tempo desde a deteção até à resposta em milissegundos (detect_to_receive_ms, receive_to_action_ms, detect_to_action_ms), e o resultado inclui o estado do heartbeat do Falco (heartbeat). |
get_resource_guard_incidents |
Linux (Server) | Retorna o histórico do guarda de esgotamento de recursos e anomalias de processos (vazamentos de memória, loops de falha), com um nível de confiança (este guarda pertence à edição Server; a edição Client não o executa, portanto o resultado ali é sempre vazio). |
get_incident_timeline |
Mac / Linux | Reúne as deteções de todas as guardas numa única linha cronológica, com a ascendência dos processos e etiquetas MITRE ATT&CK (experimental). |
get_network_history |
Mac | Regista, para cada rede Wi-Fi memorizada, quantos dispositivos de gateway distintos responderam e quando foi vista pela última vez, sinalizando outras redes com nomes suspeitosamente semelhantes (possíveis Evil Twin). Também permite saber se já se ligou a uma determinada rede antes. |
get_vpn_status |
Linux (Client) | Indica se a VPN em redes não fiáveis (WireGuard / Tailscale) está ativada, se o túnel está de facto estabelecido e se o kill switch antifugas está armado. |
get_link_guard_status |
Linux (Client) | Devolve o estado de ativação do Link Guard (bloqueio de phishing / sites maliciosos através de inspeção de DNS / TLS SNI / host HTTP), o seu modo (desativado / aviso / bloqueio), a lista de permitidos e os eventos de bloqueio/aviso dos últimos 7 dias. |
get_air_gap_status |
Linux (Client) | Indica se o isolamento de emergência Air-Gap (todo o tráfego bloqueado) está atualmente ativo, o motivo que o desencadeou, o tempo restante até à libertação automática e todos os processos atualmente congelados com SIGSTOP. |
get_sharing_services_status |
Linux (Client) | Devolve a definição que para automaticamente o SSH, o Samba e a partilha de ecrã (GNOME Remote Desktop / VNC / xrdp) em redes não fiáveis, e o estado real dos serviços efetivamente parados e restaurados. |
get_bluetooth_guard_status |
Linux (Client) | Devolve a definição do Bluetooth Guard que desativa à força a visibilidade em redes não fiáveis, e o estado real do controlador (ligado, visível, dispositivos ligados). |
get_usb_guard_status |
Linux (Client) | Devolve as definições da guarda de armazenamento USB e da guarda de teclado BadUSB (a entrada é apenas suprimida via evdev — um dispositivo nunca é desautorizado ao nível do kernel), juntamente com os dispositivos ligados e os pendentes de aprovação. |
get_fleet_status |
Linux | Devolve o estado deste dispositivo no Fleet (gestão centralizada por organização, uma funcionalidade em preparação para o RoamSwitch Business): se está registado, que versão da política está aplicada, o estado dos check-ins, etc. Nunca devolve códigos de inscrição, tokens, chaves nem dados de licença. O Fleet não tem canal de comandos remotos, por isso um administrador não pode isolar nem operar este dispositivo. |
get_sensor_audit_results |
Mac / Linux | Devolve os resultados das auditorias ativas pedidas a um RoamSwitch Sensor emparelhado (um produto separado que corre no seu próprio hardware na mesma LAN): pendente, concluída ou falhada. Acrescenta a visão a partir do exterior sobre o que é realmente acessível, invisível a partir de dentro do dispositivo. Com esta ferramenta não é possível pedir uma auditoria nem emparelhar um Sensor. |
Das ferramentas acima, as que só leem o estado local (quarentena, canary, anomalias de portas, ameaças em tempo de execução, histórico de notificações, linha temporal de incidentes, histórico de rede, estado de VPN / Link Guard / Air-Gap / serviços de partilha / Bluetooth / guarda USB, etc.) continuam a funcionar mesmo quando o RoamSwitch cortou a rede de emergência devido a uma ameaça detetada. Combinadas com um LLM local, permitem investigar a causa no local durante o corte.
Códigos de motivo de verify_security_findings. Nas duas plataformas existem failing (continua a aplicar-se), passing (sem problema), not_applicable (não aplicável aqui por conceção), not_verifiable (não é possível confirmar desta forma) e unknown_check_id (o checkId indicado não existe). Só o Mac devolve helper_unavailable (o helper privilegiado não está ligado), gateway_unknown (não foi possível identificar o gateway), no_baseline (não é possível comparar com o MAC do gateway de uma rede fidedigna registada; sem rede fidedigna registada, a monitorização ARP por MCP devolve sempre este valor), not_measured (a lista de portas nunca foi medida; só aparece no relatório da app e normalmente não por MCP), location_unavailable (ler o Wi-Fi exige a permissão de localização) e tool_failed (um comando do sistema não devolveu nada ou a sua saída não permitia concluir se estava ativo ou desativo, por exemplo o SIP com enabled (Custom Configuration)). Só o Linux devolve not_root (não corre como root, por isso não consegue ler os dados), daemon_unknown (o estado do daemon não está disponível), tool_missing (falta um comando necessário), tool_timeout (um comando externo não terminou a tempo e foi interrompido), docker_unreachable (não é possível aceder ao Docker) e unconfirmed (a própria verificação marcou o resultado como não confirmado). Com inconclusive não se pode confirmar nem excluir que a correção tenha resultado, por isso reponha o privilégio ou a ligação em falta e volte a chamar a ferramenta.
Só a run_npm_audit_signatures (registo npm), opcional e exclusiva do Pro no Mac, comunica com um anfitrião externo. A run_active_vuln_scan (desativada por predefinição) só sonda 127.0.0.1, e no Mac a get_exposed_ports limita-se a enviar um HTTP GET por cada porta exposta para 127.0.0.1 para verificar os cabeçalhos. Para obter o endereço MAC do gateway, as ferramentas de diagnóstico do Mac podem enviar um ping ICMP, normalmente um (alguns se o MAC não for resolvido), ao gateway da LAN. No Linux, get_security_report e verify_security_findings não enviam nada para a LAN e só leem o gateway das caches locais (outras ferramentas que voltam a resolver o MAC do gateway, como get_guard_status, podem enviar um ping).
Como consultar a IA no trabalho e desenvolvimento diário
Exemplos práticos de prompts e respostas de IA para auditoria de portas em desenvolvimento local, verificação de Wi-Fi público, deteção de URLs de phishing e mais. Copie os prompts diretamente para a IA.
Auditoria de exposição de portas de servidores locais e BD
Ao iniciar Next.js, Vite, Python, Docker, Redis, etc., peça à IA para auditar se existem portas inadvertidamente expostas em 0.0.0.0 a toda a rede local.
• 🚨 Porta 3000 (node / Next.js): Exposta externamente em
0.0.0.0:3000• 🚨 Porta 6379 (redis-server): Exposta externamente em
0.0.0.0:6379 (sem autenticação; acessível por outros dispositivos no mesmo Wi-Fi)• ✅ Porta 5432 (postgres): Vinculada a
127.0.0.1:5432 (apenas localhost / seguro)💡 Recomendação: Altere a configuração do Redis para
bind 127.0.0.1 e inicie o Next.js com npm run dev -- -H 127.0.0.1.Verificação de segurança ao ligar a Wi-Fi público
Logo após ligar-se a uma rede Wi-Fi pública num café ou hotel, peça à IA um diagnóstico completo para verificar se a firewall e a proteção ARP estão ativas.
• 🛡️ Pontuação global: 88 / 100 (Grade: A-)
• 📡 Estado da rede: Rede não confiável (Modo em viagem / filtro de pacotes ativo)
• ✅ Firewall / Modo invisível: Ativado (bloqueia pacotes de sondagem externa)
• ✅ Isolamento automático anti-ARP spoofing: Ativado (isolamento automático em caso de interceção)
• ⚠️ Ação recomendada: A encriptação FileVault está desativada. Recomenda-se a ativação nas Definições do Sistema.
Análise de links suspeitos em e-mails e chats
Peça à IA para inspecionar instantaneamente URLs recebidos por e-mail ou mensagens de Slack/Discord totalmente em local, sem enviar o link para servidores externos (Zero Telemetry).
• 🚨 Nível de risco: Dangerous (Perigoso / Pontuação: 8/100)
• ❌ Subdomínio enganoso: Finge ser
apple.com, mas o domínio real é login-auth-verify.xyz.• ❌ TLD de alto risco:
.xyz é frequentemente utilizado em campanhas de phishing efémeras.• 🔒 Zero Telemetry: Inspecionado localmente no seu Mac sem qualquer transferência de dados para o exterior.
• 🛑 Recomendação: Não abra o link sob qualquer circunstância, elimine e reporte o e-mail.
Proteção de segurança autónoma durante a programação
Ao delegar tarefas ao Claude Code ou Antigravity, deixe o agente executar as ferramentas MCP autonomamente como salvaguarda para verificar se não foram abertas portas indevidas.
1. Servidor Fastify iniciado na porta 8080.
2. 🔍 Verificação RoamSwitch MCP: Executou
get_exposed_ports e confirmou que a porta está estritamente vinculada a 127.0.0.1:8080 (apenas localhost).3. Ambiente seguro verificado. A prosseguir com os testes de integração.
Relatório de segurança diário e exportação Markdown
Gere com um clique um relatório em Markdown claro e estruturado para conformidade de TI, auditorias da empresa ou o seu registo de trabalho diário.
## 🛡️ Mac Security Health Report (2026-08-28)
- Pontuação global: 96 / 100 (Grade: A+)
- Estado das defesas principais:
• FileVault: ✅ Ativado (APFS Encrypted)
• SIP: ✅ Ativado
• Firewall / Modo invisível: ✅ Ativado
• Isolamento automático ARP: ✅ Ativado
• Proteção contra ameaças DNS: ✅ Ativado (Quad9 Secure DNS)
- Ações recomendadas: Nenhuma (excelente estado de segurança)Verificação do estado dos guards de USB, Bluetooth e transferências
Confirme se as defesas em tempo real, como o alerta de USB desconhecido, monitorização de Bluetooth e proteção de downloads, estão operacionais.
• 🛡️ Nível de proteção ativo: Balanced (Modo padrão de proteção)
• ✅ Guarda de armazenamento USB: Ativo (alerta/bloqueia pens USB não registadas)
• ✅ Guarda de Bluetooth: Ativo (monitoriza a proximidade de dispositivos não emparelhados)
• ✅ Proteção de downloads Web/Mail: Ativo (análise automática ClamAV de ficheiros em quarentena)
• ✅ Proteção contra ameaças DNS: Ativo (bloqueia domínios maliciosos C2 e phishing)
Uso do app e esclarecimento de mensagens de alerta
Consulte a IA sobre qualquer notificação, aviso ou detalhe técnico (filtro de pacotes, FSEvents, quarentena ClamAV, guarda USB, etc.) e receba conselhos oficiais verificados.
• 🚪 Motivo: O servidor iniciou em
0.0.0.0 (aberto na LAN). O RoamSwitch bloqueou acessos externos de entrada.• ⚙️ Solução:
1. Recomendado: Inicie com
npm run dev -- -H 127.0.0.1.2. Partilha na LAN: Autorize a porta 3000 na auditoria de portas.
• 🔍 Análise do incidente: Um dispositivo falsificou pacotes ARP para se passar pelo router (ataque Man-in-the-Middle).
• 🛡️ Defesa automática: O RoamSwitch isolou imediatamente a ligação em modo air-gap de emergência.
• 🛑 Recomendação: Não volte a ligar-se a essa rede Wi-Fi. Continue a trabalhar com segurança através do hotspot.
• 🔌 Motivo da ejeção: Ejetado automaticamente para prevenir roubo de dados e BadUSB.
• ⚙️ Passos de registo: 1. Abra 'Definições' no ícone do RoamSwitch → 2. Selecione 'Proteção USB' → 3. Clique em 'Adicionar de dispositivos ligados' → 4. Defina a permissão como 'Apenas leitura (Recomendado)' e guarde.
• ⚠️ Causa: A comunicação XPC com o daemon privilegiado
RoamSwitchHelper foi temporariamente interrompida.• 🛠️ Restauro:
1. Abra o Terminal e reinicie o assistente:
sudo killall RoamSwitchHelper2. Reinicie a app RoamSwitch.
3. Em 'Definições do Sistema' > 'Geral' > 'Itens de início e extensões', certifique-se de que o
RoamSwitchHelper está ativado.Triagem offline com um LLM local + MCP após um bloqueio de emergência Air-Gap
Quando o Air-Gap (bloqueio de rede de emergência) é acionado — por exemplo, ao detetar ransomware —, a comunicação com clientes de IA na nuvem como o Claude Desktop também é cortada. Mas o servidor MCP do RoamSwitch continua a funcionar, pois comunica apenas através de um canal de processo local; combine-o com um LLM local (por exemplo, via Ollama) e poderá continuar o diagnóstico sem qualquer acesso à rede. A deteção de anomalias em registos, a deteção de adulteração e a verificação de CVE conhecidas são totalmente locais, por isso este é exatamente o momento para o qual foram concebidas: quando a própria rede desaparece.
• 🐛 Isco acionado: deteção de encriptação de
/var/www/decoy_invoice.pdf às 14:32:07; o processo suspicious_enc (PID 8823) foi imediatamente congelado e isolado• 🔌 Monitorização de portas (Port Anomaly Guard): sem novos bloqueios automáticos no histórico de incidentes — o isco acionado parece ser o único ponto de entrada, sem portas backdoor adicionais abertas
• 📜 Correlação de registos (deteção de anomalias): um pico de falhas de autenticação
sshd começa 12 minutos antes do acionamento (pico de frequência detetado, Z-score 5,2) — um possível ponto de entrada• 🔒 Deteção de adulteração (FIM): sem adulteração encontrada em ~150 caminhos críticos do sistema — sem indícios de que a violação tenha atingido a camada do sistema
• 📦 Verificação de CVE conhecidas: comparado com o mapa de CVE local — sem vulnerabilidades conhecidas críticas nos pacotes afetados
💡 Ação recomendada: a violação está provavelmente confinada à raiz web. Antes de restaurar a partir de uma cópia de segurança, verifique também individualmente os outros ficheiros nesse diretório.
Sobre a integração MCP
Q. É verdade que nunca comunica com o exterior?
A. Sim. O servidor MCP é um processo local iniciado diretamente pelo seu cliente de IA através da entrada/saída padrão (stdio) e não envia qualquer telemetria. Os resultados do diagnóstico são calculados na hora, neste Mac / Linux. Só a run_npm_audit_signatures (registo npm), opcional e exclusiva do Pro no Mac, comunica com um anfitrião externo. A run_active_vuln_scan (desativada por predefinição) só sonda 127.0.0.1, e no Mac a get_exposed_ports limita-se a enviar um HTTP GET por cada porta exposta para 127.0.0.1 para verificar os cabeçalhos. Para obter o endereço MAC do gateway, as ferramentas de diagnóstico do Mac podem enviar um ping ICMP, normalmente um (alguns se o MAC não for resolvido), ao gateway da LAN. No Linux, get_security_report e verify_security_findings não enviam nada para a LAN e só leem o gateway das caches locais (outras ferramentas que voltam a resolver o MAC do gateway, como get_guard_status, podem enviar um ping).
Q. Posso usar sem a versão Pro?
A. No Linux, todas as ferramentas estão disponíveis sem custos. Com a versão gratuita da app para Mac também funciona a maioria, mas quatro são apenas Pro e devolvem um erro quando o Pro não está ativo: get_ransomware_recovery_snapshots, search_exec_events, get_process_tree e run_npm_audit_signatures. Além disso, a eficácia real de cada guarda automática também depende do estado da licença Pro, pelo que as ferramentas só conseguem confirmar o estado do interruptor nas Definições.
Q. Que clientes de IA são suportados?
A. Qualquer cliente que suporte o transporte stdio do MCP (Model Context Protocol) deverá funcionar em geral, mesmo além dos listados acima. Verificado com o Claude Desktop, Claude Code, OpenAI Codex CLI, OpenCode e Antigravity.
Q. O Antigravity exibe um erro de «Hook Failure» ou telemetria ao chamar ferramentas?
A. Um hook PreToolUse de plugins externos (como a telemetria do Google Cloud) no Antigravity pode bloquear a execução. Abra ~/.gemini/config/plugins/.../hooks.json e defina "enabled": false.
Q. Posso efetuar consultas quando o acesso à rede está bloqueado?
A. Sim, se utilizar um LLM local (com OpenCode via Ollama ou LM Studio), tudo é processado 100% no seu Mac / Linux e funciona offline mesmo durante o isolamento de rede de emergência. Se utilizar um LLM na nuvem (como a API Claude), mude para uma ligação segura como hotspot antes de consultar.