Antigravity MCP Bridge
This server is a local MCP bridge for delegating Antigravity/agy coding tasks in isolated project copies, then reviewing, testing, verifying, and integrating changes under strict controls.
Check
agyhealth, authentication, and capabilities; list/select models; inspect observed token usage.List eligible project files and run read-only or write tasks in a sandboxed copy with prompts, roles, models, timeouts, and acceptance criteria.
Resume completed sessions and monitor tasks through status, events, results, waiting, and cancellation.
Preview diffs and read large patches/results in chunks bound to SHA-256 hashes.
Execute sandboxed tests or record client-reported test evidence.
Verify acceptance criteria and review quotes against actual copied files.
Integrate verified patches into the source only after hash/review/test checks and the configured approval mode; discard or clean up copies afterward.
Manage persisted tasks and sessions; the original project stays unchanged until integration.
README-documented advanced features include role handoffs, model comparison, groups/workflows, private memory, custom roles, client-provided skills, sandbox policy controls, and Windows LPAC portable runtime.
Allows delegating programming tasks to Google Antigravity via the official agy CLI, enabling task start, event tracking, result retrieval, and cancellation.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Antigravity MCP BridgeUse Antigravity to add input validation to the signup endpoint and preview the diff"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Antigravity MCP Bridge
Servidor MCP local para delegar tarefas de programação ao Google Antigravity por meio do CLI oficial agy. O Codex pode iniciar tarefas, acompanhar eventos, consultar resultados e cancelar processos. O projeto é independente e não é afiliado ao Google ou à OpenAI.
Codex -- MCP stdio --> bridge -- subprocesso --> agy oficial --> Antigravity
Codex <-- eventos e resultado estruturados <-- bridge <-- stdout/stderrO bridge não acessa endpoints privados, cookies ou os armazenamentos de autenticação do CLI. Para candidatos a arquivos do projeto, o bridge realiza apenas inspeção local durante o preflight preventivo antes da cópia. A comunicação com o serviço é feita pelo próprio agy.
Requisitos
Node.js 24 ou mais recente e npm. Esse requisito inicia o servidor; no Windows LPAC, ele não garante a compatibilidade de todos os subprocessos Node.
Git 2.32 ou mais recente, disponível em uma entrada absoluta do
PATH. Versões anteriores falham na admissão porque não oferecem o isolamento de configuração global exigido pelo bridge.Antigravity CLI oficial instalado e disponível no
PATH(fonte primária de instalação). Você também pode definirAGY_PATHcom o caminho absoluto do executável.Autenticação oficial concluída no
agy. O CLI gerencia credenciais por meio dos mecanismos nativos do sistema operacional: Windows Credential Manager, macOS Keychain ou Linux Secret Service (via D-Bus). O bridge preserva diretórios de perfil e configuração, sessão de segurança, D-Bus, proxy, certificados,GEMINI_API_KEYeGOOGLE_GEMINI_BASE_URL. Variáveis de Google Application Default Credentials (ADC) e de ambientes corporativos (GOOGLE_APPLICATION_CREDENTIALS,GOOGLE_CLOUD_PROJECT,GCLOUD_PROJECT,GOOGLE_CLOUD_UNIVERSE_DOMAIN) são preservadas no ambiente por compatibilidade; o fluxo Enterprise não foi validado ponta a ponta. Consulte a documentação oficial do modo headless.
A descoberta (discover) do CLI executa --version e --help, exigindo exit code 0 em ambas as chamadas, saída não vazia e anúncio obrigatório das capacidades stream-json e --sandbox. Se o executável não for encontrado, a permissão for negada, a sondagem falhar ou o CLI não for compatível, o bridge emite os diagnósticos AGY_NOT_FOUND, AGY_PERMISSION_DENIED, AGY_PROBE_FAILED ou AGY_INCOMPATIBLE.
O bridge foi validado com agy 1.3.2 e @modelcontextprotocol/sdk 1.30.1. As tarefas delegadas exigem que o CLI anuncie --sandbox e stream-json; versões futuras podem exigir adaptação. No Windows, antigravity_test usa por padrão o executor local do bridge em AppContainer/LPAC; nos demais sistemas, usa o sandbox oficial do agy.
O Git local usa um ambiente próprio, com PATH restrito a diretórios fora do projeto e da cópia. Hooks, fsmonitor e configurações globais de execução ficam desativados; as regras de ignore são consultadas separadamente. Isso preserva a política de autenticação do agy. Quando o encerramento de um processo Git não pode ser comprovado após solicitação de término e janela delimitada de tolerância (pipes retidos), a operação falha com GIT_CLEANUP_UNVERIFIED, destruindo stdio e bloqueando a cópia com marcador no baseline privado para impedir reutilização, prévia, integração ou exclusão insegura de recursos potencialmente retidos, sem alegar falsamente limpeza comprovada.
Alterações textuais com bytes não-UTF-8 falham com UNSUPPORTED_PATCH_ENCODING, evitando corrupção na aplicação. Declare esses arquivos como binary no .gitattributes para obter patches binários do Git que preservem os bytes originais.
Related MCP server: Antigravity MCP Bridge
Versões disponíveis
Os exemplos de instalação selecionam a 0.9.0. Consulte a página do pacote no npm para conferir a versão distribuída.
A 0.9.0 inclui o Anti-AI Craft com as skills de código e segurança sempre carregadas e as demais sob demanda, redação de erros, frames, deltas, mensagens e estado antes da persistência, recusa de credenciais em entradas operacionais, confirmação do encerramento dos processos de cada execução, regras de delegação com restauração do fim de linha original nas prévias, sanitização única do estado salvo por versões anteriores e cancelamento efetivo de testes Windows recém-enfileirados.
A 0.8.0 acrescenta workflows no servidor, checkpoints, hooks de validação, memória privada, perfis completos, seleção de MCPs e ferramentas por tarefa, responsáveis e dependências, mensagens entre nós, espera conjunta, resultados JSON, artefatos com hashes e orçamento por consumo observado.
A 0.7.1 preserva entrega compacta, mensagens por sessão, skills selecionadas, execução simultânea e autorização prévia de integração, além das correções do Windows.
A 0.6.1 inclui executor Windows do bridge, permissões de sandbox controladas por ferramentas MCP e um runtime Node portátil opcional para LPAC. O runtime está publicado em um Release imutável; prepare-o explicitamente antes de usar o modo portátil.
A 0.5.1 inclui perfis, espera com progresso, transferência entre papéis, comparação de modelos e papéis personalizados. Ela amplia a margem de observação dos testes para suportar a preparação de cópias em runners mais lentos, preservando as verificações dos timeouts de execução.
Instalação
Servidor MCP via npm/npx
Para iniciar o servidor pelo pacote npm 0.9.0, configure seu cliente MCP com:
{
"mcpServers": {
"antigravity": {
"command": "npx",
"args": ["--yes", "antigravity-mcp-bridge@0.9.0"]
}
}
}No Windows, clientes que exigem o nome completo do comando podem usar npx.cmd. O executável inicia o servidor em stdio; não é um comando interativo. O pacote contém o servidor compilado e os avisos das dependências incluídas. Node.js 24, Git e o agy autenticado continuam necessários. Para validar uma versão ainda não publicada, use npm run build:plugin, npm pack e o tarball local com npx --yes --package <caminho-do-tarball> antigravity-mcp-bridge.
Instalação pelo código-fonte
Os exemplos PowerShell usam npm.cmd, o lançador do npm para Windows, que funciona mesmo quando a política de execução bloqueia npm.ps1. Em outros shells, use npm.
git clone https://github.com/Zythenth/antigravity-mcp-bridge.git
cd antigravity-mcp-bridge
npm.cmd ci
npm.cmd run build:plugin
npm.cmd testnpm run build:plugin compila o servidor e gera plugin/server.mjs. Esse arquivo também acompanha o repositório para que o plugin possa ser instalado sem executar o build. npm start inicia o servidor MCP em stdio; a saída padrão fica reservada para JSON-RPC.
Runtime Node portátil no Windows LPAC
O servidor iniciado diretamente por npm usa o Node do sistema por padrão. O descritor distribuído com o plugin pede o modo portable, para que os testes Windows LPAC usem o runtime preparado no cache. Os modos são escolhidos somente na inicialização confiável do servidor com BRIDGE_WINDOWS_NODE_RUNTIME=system ou portable; entradas de ferramentas MCP não aceitam URL, hash nem caminho de cache.
No Windows, a inspeção do cache usa um helper nativo incluído no pacote, compilado com o .NET Framework já existente no sistema. O compilador também é necessário para consultar o estado do runtime portátil. Essa verificação lê os atributos e as marcas dos caminhos diretamente, sem iniciar PowerShell. O inspetor e a validação de caminhos de permissões aceitam as marcas IO_REPARSE_TAG_CLOUD a IO_REPARSE_TAG_CLOUD_F, usadas pelo OneDrive, e rejeitam junctions, links simbólicos e marcas desconhecidas em qualquer ancestral. Arquivos somente na nuvem precisam estar disponíveis para leitura. O cache continua separado do projeto. Compilação e inspeção compartilham um prazo de 15 segundos; os arquivos temporários do helper são removidos ao final.
Consulte o estado sem iniciar MCP, descobrir agy ou baixar arquivos:
node plugin/server.mjs --windows-runtime-statusNo Windows x64, prepare explicitamente o runtime antes de usar o modo portátil:
node plugin/server.mjs --prepare-windows-runtimePara preparar o runtime pelo pacote npm 0.9.0:
npx --yes antigravity-mcp-bridge@0.9.0 --prepare-windows-runtimeO status retorna JSON com requestedMode, supported, ready, buildId, nodeVersion, libuvVersion, sha256 e, quando necessário, error. Uma consulta sem suporte, sem cache ou com cache inválido continua sendo uma consulta bem-sucedida; uma falha de preparação retorna exit code 1. Preparação baixa somente os arquivos declarados do GitHub Release, confere tamanho e SHA-256 e instala o cache privado de forma atômica. Em caches situados em pastas sincronizadas (como OneDrive), toleram-se contagens extras ou transitórias de links (nlink) exclusivamente na leitura de assets com descritor confiável, tamanho e SHA-256 fixados, no staging da fonte do Node portátil com expectedSha256, e no lock de preparação do Node portátil (desde que device, inode e size permaneçam idênticos e o nonce/payload exato seja conferido, liberando com unlink apenas a entrada do próprio processo para preservar aliases). Hash, tamanho, identidade de arquivo, marcas reparse e layout de diretório permanecem estritamente obrigatórios; qualquer conteúdo alterado é recusado e aliases não são modificados. Destinos de runtime, executáveis genéricos e concessões de ACL continuam exigindo link único. O StateStore não oferece suporte genérico a armazenamento em nuvem. Inicialização, saúde e testes não baixam arquivos. Cache ausente no modo portátil exige --prepare-windows-runtime, sem voltar silenciosamente ao Node do sistema. Cache corrompido, alterado ou inseguro é recusado também pela preparação, que não o repara nem remove automaticamente. Antes de preparar novamente, uma pessoa deve inspecionar o caminho e remover manualmente somente o cache do build afetado; depois, executar --prepare-windows-runtime.
Mantenha o cache fora dos projetos. O bridge resolve os caminhos reais e recusa sobreposição em ambas as direções entre o projeto e BRIDGE_WINDOWS_NODE_CACHE_DIRECTORY, antes de consultar modelos, enfileirar a tarefa ou copiar arquivos. Essa regra também vale com includePaths e no modo system.
O runtime Node 24.21.0 LPAC1 para Windows x64 está publicado em um Release imutável, com ABI 137, libuv base 1.52.1 e apenas o PR 5181 aplicado. Ele não declara suporte geral a outras versões, arquiteturas ou plataformas. O cache instala somente node.exe, a LICENSE upstream e build.json; este último registra a fonte fixada, o patch, a ferramenta de compilação e a proveniência da execução. A seleção substitui somente o process.execPath conhecido desse runtime e o npm adjacente validado; executáveis Node ou npm personalizados permanecem selecionados como foram informados. A substituição portátil inicial de process.execPath e do npm adjacente exige Node 24 no host do servidor. O requisito geral Node >=24 permite iniciar o servidor, mas hosts Node 25/26 falham em testes elegíveis com PORTABLE_NODE_HOST_UNSUPPORTED. O cache persiste entre reinicializações normais do processo e do servidor, mas a persistência através de uma reinicialização física ainda não foi verificada.
Instalar como plugin do Codex
O repositório contém um catálogo em .agents/plugins/marketplace.json e o plugin em plugin/. Instale o catálogo e o plugin:
codex plugin marketplace add Zythenth/antigravity-mcp-bridge
codex plugin add antigravity@antigravity-mcp-bridgePara atualizar, execute codex plugin marketplace upgrade antigravity-mcp-bridge e codex plugin add antigravity@antigravity-mcp-bridge. Abra uma nova conversa depois da instalação ou atualização. Peça, por exemplo: “Use $antigravity para implementar esta mudança e revisar o resultado.” A skill orienta a escolha de modelos, o acompanhamento da tarefa e a revisão final. Sessões já abertas não recarregam as ferramentas do plugin. Se o aplicativo não encontrar agy, configure AGY_PATH no ambiente em que o Codex é iniciado.
O guia oficial de plugins explica o formato do catálogo e outras opções de instalação.
Registrar somente o servidor MCP
Para usar o bridge sem a skill do plugin, compile o projeto e registre o servidor:
$server = (Resolve-Path .\dist\src\index.js).Path
codex mcp add antigravity -- node $serverHá também um exemplo de configuração TOML. Use uma forma de registro por vez para evitar ferramentas duplicadas.
Perfis de ferramentas
Defina BRIDGE_TOOL_PROFILE no ambiente do servidor e reinicie a conexão MCP:
Valor | Ferramentas | Catálogo e execução |
| 50 | Todas as ferramentas; preserva a configuração existente |
| 36 | Consulta, modelos, sessões, handoff, comparação e consulta da política de sandbox; tarefas somente em leitura |
| 39 | Consulta mais prévia, leitura de patches e verificação; tarefas somente em leitura |
| 50 | Fluxo completo, incluindo testes, integração confirmada e descarte |
O perfil é informado em antigravity_health.toolProfile. Ferramentas fora do perfil não são registradas e chamadas diretas são recusadas. query e review também recusam mode: "write"; omitir o modo seleciona leitura. Perfis reduzem o catálogo e restringem essas tarefas; o sandbox e a política de autorização da integração continuam necessários. Valores desconhecidos impedem a inicialização.
Espera com progresso
Prefira antigravity_wait com taskId, after e timeoutSeconds (1–60, padrão 30). Clientes que enviam _meta.progressToken recebem notificações notifications/progress com a sequência e o tipo de eventos reais, incluindo ferramentas, recibos de testes e conclusão. O número é um cursor de eventos, sem total ou porcentagem. Nenhum texto de arquivo, prompt ou saída do terminal é enviado nessas notificações.
A resposta inclui ready, timedOut, estado, uso de tokens e até 1.000 eventos. Continue com nextCursor; truncated informa eventos antigos perdidos. Timeout da espera e cancelamento da chamada MCP preservam a execução. Para parar a tarefa, use antigravity_cancel. Sem suporte a progresso, a resposta final continua disponível. A espera consulta também o estado persistido para observar tarefas de outro processo do bridge.
Transferência entre papéis
Use antigravity_context após uma tarefa concluída para inspecionar critérios, relatórios e treeSha256. Em seguida, chame antigravity_handoff com sourceTaskId, esse hash, role, prompt e, opcionalmente, model e decisions.
A nova tarefa recebe uma cópia independente dos arquivos atuais, incluindo alterações ainda não integradas. Mantém o baseline do projeto original, critérios, até oito relatórios de planejamento/revisão e a origem dos testes. Decisões são marcadas como relatos do cliente; relatórios e recibos mantêm sua origem e não autorizam integração. O pacote de contexto inteiro deve caber no limite do prompt; não há corte silencioso.
Planejamento → implementação → revisão pode mudar de papel e modelo sem reusar a conversa do papel anterior. O contexto é dado a conferir, não uma instrução de prioridade superior. Hashes são conferidos ao aceitar a tarefa e ao copiar, também quando ela aguardou na fila. A revisão verifica que sua cópia permaneceu intacta, incluindo arquivos ignorados. A cópia da implementação permanece disponível para testes, verificação e integração confirmada. Uma implementação iniciada a partir da revisão preserva o patch acumulado contra o original.
A cópia continua respeitando os ignores do projeto e limites de arquivos/bytes. Se a seleção mudar por novas regras de ignore, o handoff falha; inspecione o contexto novamente. Não inclua segredos em decisões. antigravity_resume conserva papel e cópia; antigravity_handoff cria outro papel em outra cópia e sessão.
Comparação entre modelos
Após antigravity_context, chame antigravity_compare com sourceTaskId, expectedContextSha256, prompt e models contendo 2 a 4 IDs distintos devolvidos por agy models. Cada modelo recebe uma cópia independente da mesma versão e executa uma revisão em leitura. A comparação consome a quota de cada tarefa; respeita MAX_CONCURRENT_TASKS, fila, retenção e limites de cópia. As cópias são preparadas antes de iniciar o grupo, evitando que revisores disputem a cópia de origem.
Guarde comparisonId e acompanhe cada taskId com antigravity_wait. antigravity_comparison reúne pareceres, erros, uso de tokens, modelos ausentes e os achados por arquivo/linha/citação. identical significa achados literalmente iguais; different, interpretações diferentes no mesmo trecho; not-reported-by-all, um trecho não relatado por todos. Ausência de achados não prova concordância nem correção.
complete exige todos os pareceres concluídos e suas cópias ainda correspondentes ao conteúdo comparado. contextStale sinaliza que a origem ou alguma cópia mudou, ficou indisponível ou não pôde ser conferida; confira contextMatches por parecer. Erros de início ficam em startErrors; falhas ou tarefas removidas não são ocultadas. O Codex deve conferir as fontes e sintetizar recomendações, divergências e limites de cada parecer. O agrupamento não faz votação semântica e não autoriza integração. As tarefas de comparação podem ser canceladas e descartadas individualmente.
Limites de interação e contagem prévia
antigravity_health.bridgeLimitations informa duas capacidades indisponíveis:
interactiveReplies.available: false: o protocolo headless verificado recusacontrol_requestecontrol_response. Mensagens de texto em novos turnos não respondem a solicitações pendentes de permissão. O bridge encerra o stdin após seu prompt; para continuar a conversa concluída, useantigravity_resume. Examine pedidos negados nos eventos e erros, sem contornar o sandbox. A confirmação MCP da integração continua sendo uma operação separada do bridge.preflightTokenCount.available: false,exactTokens: null: não há comando do agy verificado para contar tokens antes do envio. O uso informado pelo CLI é observado após execução. Tamanho em caracteres não é uma contagem exata de tokens nem um orçamento de quota. O bridge permanece no CLI oficial, sem API adicional, novas credenciais ou estimador apresentado como contagem exata.
Essas limitações não são resolvidas por manter o processo aberto ou inventar mensagens do protocolo. Um suporte futuro exige verificar a versão e o contrato oferecido pelo CLI antes de adicionar a operação.
Entrega ao agente principal
Use deliveryMode: "messages" em antigravity_run para receber perguntas públicas estruturadas, bloqueios e um trecho do resultado final. antigravity_wait devolve messages e cursores de mensagens, sem os eventos e notificações de progresso detalhados. Uma pergunta observada pode encerrar a espera antes do fim da tarefa. O principal lê resultados e diffs completos somente quando necessários, pelas ferramentas de leitura em partes.
Cada mensagem inclui origem, modelo informado, ID, sequência e data; cada texto tem no máximo 2.000 caracteres. Até 100 mensagens são retidas por tarefa e as páginas indicam perdas de mensagens antigas. O resultado final aponta para antigravity_read_result, com o hash correspondente. As mensagens do modelo continuam sendo relatos, sem comprovar testes nem autorizar integração.
Omitir a opção conserva events, com o histórico de eventos existente. antigravity_events continua disponível para uma consulta detalhada explícita. antigravity_set_delivery_mode muda a entrega de uma tarefa; reinicie o cursor em after: 0 após trocar de modo. Passe também cursorMode com o modo do cursor anterior: se o modo de entrega mudar, a espera reinicia em zero e informa cursorReset: true. A retomada herda a escolha, que não altera permissões ou papéis.
Execução simultânea
A instalação do plugin configura duas tarefas simultâneas; o servidor independente mantém uma por padrão. MAX_CONCURRENT_TASKS aceita 1 a 16. Retomadas da mesma cópia continuam sequenciais.
Mensagens para a sessão
Use antigravity_send_message({taskId, messageId, text}) para enviar até 2.000 caracteres; messageId é um UUID escolhido pelo cliente. Repetir o mesmo ID e texto retorna o recibo existente. Outro texto com o mesmo ID é recusado. Até 20 inputs ficam retidos por tarefa.
Se o turno estiver ativo, o recibo fica queued. Após sua conclusão, o bridge retoma a sessão oficial na mesma cópia e processa os inputs em sequência. sent indica aceitação do novo turno pelo bridge, sem provar que o modelo leu a mensagem. Falhas e cancelamento ficam explícitos; um envio interrompido sem evidência de aceitação não é repetido automaticamente.
Acompanhe continuationTaskId com um novo cursor em zero. continuationPending: true em antigravity_wait indica inputs aguardando despacho; o término do turno anterior não encerra toda a conversa. Retomadas preservam seleção, skills, papel, modo e critérios. Mensagens não concedem permissões nem aprovam integração; solicitações de controle do agy continuam indisponíveis.
Modos de aprovação e integração
O servidor MCP suporta modos de aprovação controlados pela variável BRIDGE_APPROVAL_MODE no ambiente do servidor. Quando a variável não estiver definida (unset), o modo padrão é auto. Os valores aceitos são estritamente auto ou ask; valores inválidos causam erro na inicialização.
Modo automático (
auto, padrão):antigravity_integrateautoriza automaticamente a integração de alterações quando o patch estiver verificado contra o hash atual, dispensando formulários interativos MCP de confirmação humana. Atualizações validadas da política de sandbox (antigravity_set_sandbox_policy) também são aplicadas automaticamente. Nenhuma confirmação manual extra é exigida do chamador emauto. O chamador pode propor concessões estreitas e verificadas necessárias à tarefa autorizada. Agentes delegados viaagy(Gemini) NÃO escolhem, não autorizam nem proporcionam permissões. O modo automático não afrouxa os controles de segurança: tarefa de escrita concluída, hash SHA-256 da prévia, critérios de aceitação aprovados viaantigravity_verify, revisão fundamentada nos arquivos reais, testes observados atuais sem falhas, source-lock, CAS e proteção estrita de caminhos (path-protection) continuam estritamente obrigatórios. Emantigravity_health, o servidor anunciaapprovalMode: "auto",integrationApproval.mode: "auto"eintegrationApproval.method: "automatic".Modo de confirmação estrita (
ask): opt-in estrito ondeantigravity_integrateexige SEMPRE confirmação humana interativa via formulário MCP (MCP form elicitation), assim como atualizações de teto de sandbox (antigravity_set_sandbox_policy). Não há bypass para raízes previamente configuradas no ambiente (BRIDGE_PREAUTHORIZED_INTEGRATION_ROOTS) ou raízes lembradas legadas (integration-approvals.json); no modoask, a confirmação é sempre exigida. O checkbox de memorização ("Não pedir novamente neste projeto") foi removido do formulário. Emantigravity_health, o servidor anunciaapprovalMode: "ask",integrationApproval.mode: "ask"eintegrationApproval.method: "mcp-form-elicitation".
Para configurar o modo de forma persistente, defina BRIDGE_APPROVAL_MODE no ambiente privado de inicialização do servidor MCP (por exemplo, na configuração do cliente MCP ou nas variáveis de ambiente persistentes do sistema ou do usuário). Exemplos em PowerShell ($env:BRIDGE_APPROVAL_MODE = 'ask') afetam apenas o shell atual em execução. É necessário reiniciar a conexão MCP após alterar as variáveis de ambiente para que as modificações tenham efeito.
Nenhum modo introduz fallback automático para execução no host, nem altera as permissões do Codex ou do agy. A integração é realizada exclusivamente via MCP; autorizações não substituem verificações de critérios, testes e revisão técnica. Texto do Gemini, mensagens do chamador e argumentos de ferramentas não concedem autorização nem permissões de sandbox.
antigravity_health.integrationApproval.preauthorizedProjectCount informa a quantidade de raízes configuradas ou lembradas legadas; no modo ask, todas as integrações continuam exigindo confirmação humana independente desse total.
Anti-AI Craft incluído
O pacote traz um snapshot verificado do Anti-AI Craft com seis skills. Em toda tarefa nova, anti-ai-code e anti-ai-security são preparadas na cópia como skills permanentes e o Gemini é instruído a lê-las antes de trabalhar. anti-ai-design, anti-ai-design-flow, anti-ai-audit e anti-ai-remediate aparecem apenas como catálogo (nome, descrição e caminho, até 8 KiB); seus corpos, referências e imagens ficam fora do prompt e são lidos sob demanda, somente leitura, a partir de uma cópia privada por revisão em <estado>/anti-ai-craft/, adicionada ao CLI com --add-dir. Sob política de ferramentas, os hooks permitem apenas leitura nessa raiz. A seleção situacional é uma política desta integração: o Gemini escolhe pela pertinência da tarefa, sem exigir o nome literal da skill.
O snapshot é verificado contra o manifesto (tamanho e SHA-256 de cada arquivo) antes de cada tarefa nova; conteúdo ausente ou adulterado falha com CRAFT_SNAPSHOT_INVALID ou CRAFT_SNAPSHOT_MISSING, sem download automático, e a correção é reinstalar a versão do bridge. Retomadas e handoffs conservam o snapshot da sessão original. As permanentes contam no limite de oito pacotes e de 1 MiB das skills fornecidas; uma skill fornecida com o mesmo nome e conteúdo idêntico é deduplicada, e conteúdo diferente falha com SKILL_CONFLICT. Arquivos das skills não entram no patch.
BRIDGE_ANTI_AI_CRAFT=off desativa a política para todas as tarefas. BRIDGE_ANTI_AI_CRAFT_DIRECTORY aponta para outro snapshot com o mesmo formato, que também é verificado contra o próprio manifesto. Disponibilizar as skills não instala o MCP do Anti-AI Craft, Graphify, Python ou outras ferramentas que elas mencionem. As imagens da biblioteca visual mantêm as licenças de suas fontes; consulte THIRD_PARTY_NOTICES.md.
Skills fornecidas pelo cliente
O Codex ou outro cliente pode enviar skills selecionadas em antigravity_run.skills. No modo compacto, providedSkillSummaries contém apenas nome, hash e quantidade de arquivos. Cada pacote contém o texto de SKILL.md e, opcionalmente, recursos de texto com caminhos relativos à skill:
{
"workingDirectory": "/caminho/absoluto/do/projeto",
"prompt": "Use a skill review-style para revisar o projeto.",
"mode": "read-only",
"skills": [{
"name": "review-style",
"content": "---\nname: review-style\ndescription: Regras de revisão\n---\nLeia references/check.md antes de revisar.",
"resources": [{ "path": "references/check.md", "content": "Confira os requisitos contra os arquivos reais." }]
}]
}O bridge prepara apenas os pacotes enviados em .agents/skills/<nome-em-minúsculas>/ dentro da cópia. Preserva o nome declarado e os bytes UTF-8, incluindo nomes como Presentations. Os metadados retornados contêm nomes, caminhos relativos e hashes; não repetem os textos das skills. Skills globais não são descobertas nem importadas automaticamente. O cliente deve selecionar e fornecer também os recursos necessários, mantendo arquivos privados e credenciais fora do envio.
Limites: 8 skills, 100 recursos por skill e 1 MiB de texto no total. Esses arquivos também contam nos limites de arquivos e bytes da cópia. Caminhos absolutos, travessia, nomes de dispositivos, aliases de caixa, links e colisões com pastas existentes na cópia são recusados. O preparo não executa os scripts fornecidos. Dependências de ferramentas precisam existir no agy; uma skill não concede novas permissões.
A retomada e o handoff conservam os pacotes originais e seus hashes. Não é possível fornecer skills novamente numa retomada, mesmo como lista vazia; use uma nova tarefa para outra seleção. Alterar, remover ou acrescentar recursos numa skill fornecida invalida a verificação. Os arquivos auxiliares não entram no patch do projeto original. Omitir skills preserva o uso de skills que já pertençam aos arquivos elegíveis do projeto.
Papéis personalizados
Defina BRIDGE_CUSTOM_ROLES como um array JSON no ambiente do servidor e reinicie a conexão. Exemplo PowerShell:
$env:BRIDGE_CUSTOM_ROLES = '[{"name":"security-review","baseRole":"reviewer","description":"Revisão de controles de acesso","instruction":"Examine os controles de acesso do escopo solicitado e cite evidências reais."}]'antigravity_roles lista os nomes disponíveis, descrições, base e tamanho das instruções. Selecione o nome em role de antigravity_run ou antigravity_handoff; os schemas MCP anunciam os nomes configurados. Cada papel tem nome de até 32 caracteres em letras minúsculas, números e hífens, baseRole e instruções de até 8.000 caracteres. A descrição é opcional, até 500 caracteres. Há até 20 papéis; nomes duplicados, substituição dos três nomes nativos, bases desconhecidas ou instruções vazias impedem a inicialização.
As bases planner e reviewer conservam modo de leitura, contratos JSON e conferência de citações. implementer conserva o fluxo de escrita na cópia e as mesmas exigências de verificação e confirmação para integração. Instruções personalizadas não dão permissões extras e entram no limite total do prompt. A definição usada é salva com a tarefa; a retomada mantém instruções e base originais, mesmo após mudar a configuração. Para trocar de papel, crie uma nova tarefa ou faça handoff.
Grupos de tarefas e espera conjunta
O cliente cria um grupo com UUID estável, raiz Git, título e até 32 tarefas. Cada tarefa tem uma chave única, owner com um papel configurado, dependsOn e as opções de execução em task. Dependências desconhecidas, duplicadas, ciclos e definições maiores que 4 MiB são recusados. Há até 100 grupos retidos.
Ferramenta | Uso |
| Persiste a definição; não inicia modelos |
| Inicia ou retoma com |
| Metadados, responsáveis, dependências e referências |
| Espera mensagens públicas ou término do grupo |
| Impede novos nós e cancela tarefas no servidor responsável |
| Espera de 1 a 32 tarefas avulsas com cursores independentes |
| Recibos compactos das mensagens entre nós |
| Síntese final e referência após revalidar checkpoints |
Exemplo de definition para antigravity_group_create:
{
"workingDirectory": "<raiz-git-absoluta>",
"title": "Inspeção sequencial",
"jobs": [
{ "key": "inspect", "owner": "implementer", "dependsOn": [],
"task": { "prompt": "Inspecione os arquivos selecionados.", "mode": "read-only",
"acceptanceCriteria": [{ "id": "inspection", "description": "Inspeção fundamentada nos arquivos selecionados" }] } },
{ "key": "check", "owner": "implementer", "dependsOn": ["inspect"],
"task": { "prompt": "Confira os requisitos da tarefa.", "mode": "read-only",
"acceptanceCriteria": [{ "id": "requirements", "description": "Conferência fundamentada dos requisitos" }] } }
]
}Repita o mesmo UUID e a mesma definição para consultar uma criação com resposta perdida; outra definição com esse UUID retorna GROUP_CONFLICT. O início exige o hash devolvido. O servidor admite um nó somente após todos os seus pré-requisitos terminarem com sucesso. Falha ou cancelamento bloqueiam os dependentes. Cada nó tem sua própria cópia; dependências controlam a ordem e não integram automaticamente alterações entre cópias.
Os grupos usam entrega messages. Cada nó aplica hooks da política nativa dentro da cópia, com as ferramentas de arquivo permitidas pelo teto humano e finish. MCPs entram por seleção da tarefa ou por um padrão explícito do perfil. A raiz do projeto precisa permanecer canônica e separada do estado privado do bridge. As esperas devolvem no máximo quatro mensagens no total, uma por tarefa, com nextCursor, oldestAvailable e truncated. Passe os cursores anteriores na próxima espera. hasMoreMessages e hasMore sinalizam mensagens ainda não lidas, inclusive quando ready já for verdadeiro. As respostas não incluem prompts, histórico de ferramentas ou resultados intermediários completos; use os leitores por partes quando precisar deles. Cancelar a espera preserva a execução.
Após reiniciar o servidor, resumeRequired informa a necessidade de retomada explícita. O coordenador recupera IDs já aceitos e não repete nós concluídos. Se uma admissão interrompida não tiver identidade verificável, retorna GROUP_ADMISSION_UNVERIFIED; não inicia outra execução silenciosamente. Alterar o perfil de um responsável pausa novas admissões com GROUP_PROFILE_CHANGED. Tarefas removidas pela retenção retornam erro, sem repetição.
O estado completed informa o término das execuções. Integração continua exigindo revisão, testes, verificação atual e hash por tarefa. Os registros de grupo ficam no estado privado até remoção local; descarte as cópias antes de apagar registros, conforme Privacidade.
Workflows e checkpoints
Acrescente workflow à definição do grupo:
{
"finalNode": "check",
"hooks": {
"inspect": { "requireReview": true }
},
"fileSources": { "check": "inspect" }
}O nó final precisa depender, direta ou indiretamente, de todos os outros nós. Cada etapa exige acceptanceCriteria. O servidor verifica as condições de arquivo antes de liberar dependentes. Critérios sem uma verificação automática exigem revisão com citações conferidas nos arquivos reais. requireReview exige essa revisão mesmo com verificações automáticas; requireTests exige evidência observada de execução, vinculada ao patch e à árvore atuais. Registros client-reported não satisfazem esse hook. Testes diretos exigem uma etapa de escrita baseada em implementer e um executor compatível; a falta dessa capacidade não autoriza execução no host.
Os resultados JSON e artefatos permanecem no estado privado. Etapas de implementação sem formato explícito usam {"summary":"..."}; formatos dos perfis e contratos de outros papéis são preservados. Os predecessores fornecem JSON validado e hashes ao próximo nó; a síntese final recebe os intermediários concluídos. O contexto tem até 64 KiB UTF-8. Excesso retorna WORKFLOW_CONTEXT_TOO_LARGE, sem truncamento silencioso ou estimativa de tokens.
fileSources escolhe uma dependência direta como base dos arquivos de uma etapa. O servidor confere seu checkpoint e cria outra cópia. Outros predecessores fornecem dados; não há mescla automática de arquivos. A seleção de arquivos e skills da base é preservada: omita includePaths e skills no destino. As regras existentes de transferência de memória continuam válidas; memory: [] permite não herdar snapshots.
Checkpoints guardam hashes da árvore, patch, resultado, artefatos e validação. Saídas com revisão ou testes pendentes são retidas e pausam o grupo. Depois da verificação, retome com antigravity_group_start e o mesmo hash de definição. O servidor revalida os dados e não repete a chamada já concluída. Alterações em arquivos ou resultados retornam WORKFLOW_CHECKPOINT_CHANGED; identidades perdidas não autorizam repetição. Novas mensagens não podem alterar uma etapa já checkpointada.
antigravity_group_wait mantém os intermediários fora da resposta, preservando perguntas, bloqueios e erros públicos. antigravity_workflow_result revalida os checkpoints e entrega somente a síntese pública final e uma referência com hash. Uma execução posterior com falha impede disponibilizar uma síntese como atualmente validada. Essas verificações cobrem as condições declaradas; a integração mantém seus próprios testes, revisão e confirmação ou autorização prévia.
Orçamento observado por grupo
Use "budget": {"maxTotalTokens": 100000} na definição. Sem esse campo, o comportamento existente é preservado. Com teto configurado, o grupo aguarda os contadores do turno atual antes de admitir outro. O controle inclui continuações, mensagens entre nós e reparos com modelo; retomadas contam a diferença da sessão e execuções locais sem modelo têm consumo conhecido zero.
O status informa observedTotalTokens, subtotal conhecido, tarefas sem medição, margem e estado do orçamento. Contadores ausentes ou identidades retidas perdidas bloqueiam novas chamadas com GROUP_USAGE_UNAVAILABLE; atingir o teto pausa com GROUP_BUDGET_EXCEEDED. O teto faz parte da definição imutável do grupo.
Esse controle impede novas admissões conforme consumo observado. Um turno já aceito pode ultrapassar o teto; o CLI não oferece previsão exata de tokens ou preço antecipado. Não há substituição de dados ausentes por estimativas.
Mensagens entre nós
O chamador seleciona rotas direcionadas em definition.peerRoutes, por exemplo [{"from":"inspect","to":"check"}]. Omissão ou [] nega envios. Não há direção inversa ou broadcast implícitos. Limites: 128 rotas, 20 mensagens por nó de origem durante o grupo e 100 por grupo.
O delegado recebe os destinos permitidos e emite uma resposta pública <antigravity-peer-message>{"messageId":"<uuid-estável>","toNode":"check","text":"descoberta"}</antigravity-peer-message>. O texto tem até 2.000 caracteres. O servidor verifica responsável, raiz de conversa, projeto e definição; a entrada chega ao destinatário como dados sem autorizar ferramentas ou integração.
A entrega aguarda a admissão do destinatário e o fim do turno ativo, usando a continuação oficial do CLI. Cada novo turno pode consumir quota. queued informa espera; sent informa aceitação da continuação, sem comprovar leitura pelo modelo. Dependências aguardam os turnos adicionais, e a espera conjunta acompanha o turno mais recente.
antigravity_peer_receipts recebe groupId, after e limit de 1 a 20. Os recibos trazem origem agy-reported, destinos, estado e SHA-256; corpos e IDs internos de transporte ficam fora da página. O cursor pagina um retrato: releia a página para conferir estados alterados. Resultados públicos do destinatário podem reproduzir dados recebidos e permanecem disponíveis pelos leitores normais.
Mesmo ID e conteúdo preservam a identidade. Conteúdo conflitante pausa com PEER_MESSAGE_CONFLICT; limites e truncamento pausam com PEER_LIMIT_EXCEEDED. Confirmação ambígua exige inspeção e retomada explícita, reutilizando o ID persistido. Rota negada ou destinatário encerrado produz falha sem outra sessão. O cancelamento alcança continuações ativas; grupos encerrados recusam novos turnos.
Em tarefas de implementação com política nativa e sem schema de saída explícito, o bridge oferece o formato JSON {"summary":"..."} para disponibilizar a chamada guardada finish. Schemas explícitos e contratos de outros papéis são preservados. Envelopes no campo público summary também são reconhecidos; isso não expõe raciocínio privado.
Memória privada por projeto e especialista
A memória fica no estado privado do servidor, separada pela raiz Git canônica e pelo identificador do especialista. Nenhum arquivo do projeto é importado automaticamente.
Ferramenta | Uso |
| Metadados, hashes, bytes e limites; não devolve o texto |
| Texto em partes, vinculado a |
| Grava texto revisado pelo chamador; |
| Remove somente a versão correspondente ao hash informado |
Exemplo de seleção em antigravity_run, depois de ler e conferir a memória:
{ "memory": [{ "specialist": "reviewer", "sha256": "<hash-atual-de-64-caracteres>" }] }O chamador escolhe até oito entradas. O texto selecionado é enviado ao CLI como dados revisáveis, dentro do limite total do prompt; ele não concede permissões nem substitui as instruções da tarefa. Os retornos de tarefas incluem somente os metadados da memória, inclusive na entrega compacta. O conteúdo não é preparado como arquivo auxiliar nem integrado ao projeto.
memory também pode ser um padrão explícito de especialista. Uma lista vazia substitui esse padrão. A retomada conserva os snapshots originais, mesmo após substituir ou remover a memória armazenada; fornecer memory outra vez numa retomada é recusado. Handoffs herdam o snapshot por padrão e permitem uma seleção explícita diferente ou memory: [].
Os padrões globais são 100 entradas, 1 MiB de texto e 64 KiB por entrada, medidos em UTF-8. Escritas usam comparação de hash e lock entre processos; versões divergentes retornam MEMORY_CHANGED. Links, junções de armazenamento, arquivos corrompidos e hashes inconsistentes são recusados. Perfis query e review permitem somente listar e ler.
Textos com formatos de credencial de alta confiança são recusados com INPUT_SECRET_DETECTED, assim como prompts e mensagens. Entradas antigas com esses valores são lidas redigidas e não podem ser selecionadas.
Remover uma entrada não apaga os snapshots já guardados nas tarefas retidas. O descarte da cópia também preserva esses registros. Consulte Privacidade para apagar o estado local; o bridge não oferece criptografia própria.
Controles por especialista e tarefa
Papéis personalizados aceitam defaults com model, effort, skills, includePaths, outputSchema, artifactPaths, deliveryMode, timeoutSeconds, allowedTools, mcpServers e memory. Argumentos explícitos substituem cada campo completo, sem mesclar listas; model: null mantém Auto. A retomada conserva o snapshot original. Schemas de resultado personalizados exigem base implementer; os outros papéis mantêm seus contratos próprios.
A pessoa usuária configura no ambiente do servidor:
BRIDGE_ALLOWED_AGY_TOOLS: array JSON que limita as ferramentas nativas. Valores aceitos:view_file,write_to_file,replace_file_content,multi_replace_file_contentefinish. A finalização permanece implícita. Um teto configurado é aplicado mesmo quando o chamador omite seletores.BRIDGE_MCP_CATALOG: até 20 servidores confiáveis, cada um comid, transporte etools: [{name, readOnly}]. O transporte écommandabsoluto comargs/env/cwdopcionais, ouserverUrlHTTPS/HTTP de loopback comheadersopcionais.nativeServerNamepermite um alias nativo estável definido pela pessoa usuária.
No CLI com os nomes atuais, read_file corresponde à capacidade view_file, write_file a write_to_file e edit_file exige replace_file_content ou multi_replace_file_content. Esses nomes usam Path; os seletores acima permanecem compatíveis. O hook rejeita alvos ambíguos e aplica as mesmas verificações de caminho e modo somente leitura. O recibo registra o nome efetivamente chamado.
Consulte antigravity_get_agent_policy antes de escolher allowedTools e mcpServers: [{serverId, tools}] em antigravity_run ou antigravity_handoff. O catálogo público mostra apenas IDs, aliases, descrições e ferramentas; transportes e credenciais não entram no prompt nem na política devolvida. Listas vazias selecionam somente a finalização e nenhum MCP. Sem configuração global nem seletores, tarefas antigas conservam o comportamento anterior. Uma sessão antiga sem controles exige nova tarefa depois de configurar um teto global.
Os hooks nativos restringem arquivos à cópia, bloqueiam ferramentas não escolhidas e impedem alterações da configuração auxiliar. Leituras em .agents são limitadas aos arquivos de skills explicitamente fornecidos. Helpers são conferidos por hash e ficam fora dos patches. A finalização precisa de recibo novo vinculado à política e à conversa; uma finalização anterior não valida a retomada. O handoff cria seus próprios controles e recibos, conservando a seleção e reduzindo ferramentas incompatíveis com leitura.
O agy também exige uma autorização nativa mcp(alias/ferramenta) em suas configurações. O bridge não concede essa autorização nem altera configurações globais; a ausência aparece como AGY_MCP_PERMISSION_REQUIRED. Servidores stdio são programas confiáveis executados no host: os hooks controlam chamadas do modelo, sem isolar a implementação interna desses serviços.
No Windows, testes pelo executor LPAC continuam disponíveis. A configuração MCP auxiliar mantém uma DACL protegida e não recebe acesso do processo de teste. A seleção de ferramentas não concede terminal: o executor legado BRIDGE_TEST_EXECUTOR=agy recusa testes diretos de tarefas com essa política usando POLICY_TEST_EXECUTOR_UNAVAILABLE.
Ferramentas
Todas as ferramentas publicam outputSchema com campos e tipos de suas respostas estruturadas. O contrato contempla sucesso e error: { code, message }. O SDK confere os campos obrigatórios antes de entregar respostas de sucesso; clientes também podem validar o JSON recebido. Dados brutos do CLI continuam com tipo aberto porque seu formato pertence ao provedor. O contrato não transforma uma alegação do modelo em prova de execução.
Ferramenta | Função |
| Verifica executável, versão, autenticação aparente e capacidades |
| Lista os IDs devolvidos por |
| Consulta ou persiste o modelo padrão; |
| Inspeciona e transfere plano, decisões, critérios e evidências para outro papel em cópia independente |
| Solicita pareceres de 2 a 4 modelos e reúne achados, divergências, falhas e uso observado |
| Lista limites nativos e IDs/ferramentas MCP configurados, sem transportes ou credenciais |
| Lista os papéis nativos e personalizados configurados |
| Lê a política global normalizada, seus limites e o hash atual |
| Solicita ao cliente MCP a confirmação humana para substituir a política global com comparação do hash anterior |
| Enfileira texto do chamador com recibo idempotente e continuação oficial da sessão |
| Inicia uma tarefa e retorna o |
| Lista os arquivos elegíveis para a cópia |
| Mostra A/M/D, totais de linhas, estatísticas por arquivo, patch, hash e testes relatados |
| Registra comando, saída e exit code relatados pelo cliente, vinculados ao hash |
| Executa o comando exato com a seleção de sandbox do chamador e captura evidência do executor escolhido |
| Confere critérios da tarefa e evidências de revisão contra arquivos reais |
| Lê o patch por arquivo ou em trechos vinculados ao hash completo |
| Lê o JSON final do CLI em trechos com hash de conteúdo |
| Consolida tokens observados por tarefa, sessão e modelo |
| Aplica o patch verificado ao original; dispensa novo formulário somente em projetos previamente autorizados |
| Recupera IDs e metadados de tarefas persistidas localmente |
| Consulta estado, processo, sessão, uso e snapshots Git |
| Espera até 60 segundos com notificações MCP dos eventos observados; timeout não cancela a tarefa |
| Lê eventos após um cursor |
| Consulta o resultado ou informa |
| Remove a cópia e o baseline de uma tarefa finalizada |
| Remove cópias finalizadas cujo prazo de retenção expirou |
| Cancela tarefa na fila ou encerra o processo local |
| Lista sessões conhecidas no estado local |
| Retoma uma conversa conhecida pelo |
antigravity_run recebe prompt, workingDirectory absoluto na raiz de um repositório Git e, opcionalmente, model, timeoutSeconds, mode e includePaths (arquivos ou pastas relativos à raiz). Sem includePaths, copia todos os arquivos rastreados e não rastreados que não correspondam a .gitignore, .git/info/exclude ou às outras regras de ignore do Git. O filtro também exclui arquivos rastreados que passaram a ser ignorados. includePaths apenas reduz essa seleção; não permite incluir arquivos ignorados. Links simbólicos e caminhos fora da raiz são recusados. Consulte antigravity_list_models antes de selecionar um modelo.
Política de sandbox dos testes
antigravity_get_sandbox_policy devolve a política global normalizada e seu sha256 para os testes Windows LPAC. Ela é o limite máximo para readRoots, writeRoots, network, childProcesses e maxOutputChars. A configuração inicial não concede raízes externas, desativa rede, permite processos filhos e limita a saída a 4.000 caracteres.
O agente que chama o MCP, seja o Codex ou outro cliente, escolhe em cada antigravity_test Windows sandbox: { readPaths, writePaths, network, childProcesses, maxOutputChars } dentro desse limite. O bridge recusa caminhos que ultrapassem as raízes aprovadas ou que coincidam com a origem, credenciais, armazenamento do bridge, temporários controlados, links, aliases ou outros caminhos protegidos. A seleção fica vinculada à evidência do teste e ao hash da política usado. No caminho legado agy, uma seleção explícita não é aceita; sem seleção, ele conserva o comportamento anterior.
Para ampliar ou reduzir o limite global, leia antes a política e chame antigravity_set_sandbox_policy com seu hash atual e a proposta. Em modo auto, propostas validadas de teto global de sandbox são aplicadas automaticamente sem exibir formulário; em modo ask, o cliente MCP deve apresentar o formulário interativo com comparação do hash anterior. A comparação e gravação evitam substituir uma política que mudou enquanto a proposta era avaliada. O agente que chama o MCP escolhe concessões estreitas e verificadas necessárias por teste dentro desses limites; o Gemini delegado via agy não pode escolher, autorizar nem alterar concessões. Alterações afetam testes novos e os que ainda estiverem na fila; elas não revogam promessas de permissões de trabalhos ativos nem realizam fallback ao host.
Por exemplo, um pedido de leitura e escrita deve usar raízes específicas verificadas, como "<raiz-de-leitura-aprovada>" e "<raiz-de-escrita-aprovada>"; não use um disco inteiro nem presuma caminhos do computador de outra pessoa. Em modo ask, confirme antes os limites no formulário; em auto, submeta a proposta validada e selecione subconjuntos estreitos dela para o teste.
Para revisão, diagnóstico ou segunda opinião, passe mode: "read-only". O bridge exige suporte a agy --mode plan, confere ao final que nenhum arquivo foi criado, modificado ou removido (inclusive arquivos novos ignorados pelo Git) e recusa integração dessas tarefas. Esse modo é uma restrição do CLI com verificação posterior, sem garantia de bloqueio físico de escrita. O padrão mode: "write" preserva o fluxo de implementação na cópia. Uma sessão retomada mantém seu modo original.
Fluxo típico:
Consulte
antigravity_healthpara conferir CLI, perfil e modo de aprovação (approvalModeeintegrationApproval). Useantigravity_list_modelseantigravity_rolespara selecionar IDs e papéis anunciados pelo servidor.Liste os arquivos elegíveis com
antigravity_list_project_files, selecioneincludePathsquando necessário e definaacceptanceCriteriacobrindo os requisitos antes de iniciar a implementação comantigravity_run. Guarde otaskId.Acompanhe com
antigravity_wait, preservandonextCursore repetindo a espera quandoreadyfor falso.timedOutencerra apenas a espera. Useantigravity_eventspara consultar os eventos detalhados.Após o término, confira o status e os erros em
antigravity_resultcomincludeResult: false. Leia o resultado comantigravity_read_resulte o patch comantigravity_preview(includePatch: false) eantigravity_read_patch. Se houver falha, confira a causa antes de retomar;completednão comprova os requisitos.No Windows com o executor LPAC, consulte a política de sandbox e execute os testes pertinentes com
antigravity_test, usando o hash da prévia e somente uma seleção já aprovada. Nos demais sistemas, ou comBRIDGE_TEST_EXECUTOR=agy, execute o teste sem seletorsandbox, pois a seleção explícita é recusada no caminho legado. A ferramenta devolve outrotaskId: acompanhe e revise esse ID, confira a origem da evidência, exit codes e evidências desatualizadas e obtenha a prévia atual novamente.antigravity_record_testregistra testes executados pelo cliente, como relatos; não substitui a evidência observada do executor.Confira os arquivos reais contra cada critério e envie evidências de revisão a
antigravity_verifycom o hash atual. Com verificação aprovada e atual, confira também se os testes observados continuam válidos e chameantigravity_integratena tarefa de implementação mais recente dessa cópia para aplicar segundo a política de autorização configurada. Alterações no patch, nas evidências ou nos arquivos afetados do original exigem nova conferência.Informe o uso observado com
antigravity_usagee, quando o trabalho puder ser removido, descarte a cópia comantigravity_discard.
Esse fluxo de implementação requer full ou implementation. Para planejamento, revisão ou comparação, use os papéis de leitura e os fluxos específicos acima. Uma revisão por handoff recebe outra cópia; ela não altera qual é a tarefa mais recente da cópia de implementação.
A aplicação final respeita o modo ativo configurado: em auto, antigravity_integrate aplica o patch verificado sem formulários; em ask, exige confirmação humana via formulário MCP (MCP form elicitation), mesmo para raízes lembradas ou configuradas legadas (o checkbox de memorização foi removido). antigravity_health informa approvalMode, integrationApproval.available e integrationApproval.mode. No modo ask, o formulário mostra origem, tarefa, hash, arquivos e contagens de linhas; só accept com confirm: true permite aplicar. Recusa, cancelamento, timeout ou falta de suporte preservam o original. O hash identifica o patch e a confirmação vem de uma resposta separada do cliente; nenhum argumento approved é aceito como autorização. Após a resposta, o bridge confere novamente hash e origem. A confirmação depende de um cliente confiável que apresente a decisão ao usuário.
Verificação dos resultados
Consumo de tokens
antigravity_status e antigravity_result incluem task.tokenUsage. antigravity_usage consolida as tarefas retidas e aceita filtros por taskId, sessionId e model. A resposta contém byTask, bySession, byModel e os contadores inputTokens, outputTokens, totalTokens, thinkingTokens e cacheReadTokens.
O resultado final do agy informa uso cumulativo da sessão. O bridge salva os contadores anteriores ao retomar e usa a diferença para a tarefa seguinte, inclusive quando o modelo muda. Assim, duas respostas cumulativas de 120 e 170 tokens representam 170 tokens na sessão e 50 na segunda tarefa. observedCumulative preserva o último total de sessão informado pelo CLI, separado do consumo das tarefas retidas.
Contadores ausentes, inválidos, reiniciados ou sem baseline conhecido ficam null; available, partial, source e warnings indicam a qualidade dos dados. Não há estimativa de tokens nem substituição silenciosa por zero. O consumo de tarefas falhas também é incluído quando o CLI devolve os contadores finais. Antes desse resultado, o total da tarefa pode estar indisponível. Tarefas antigas removidas pela retenção deixam de compor o consolidado local. Modelo null significa que não foi informado um ID; não se presume um modelo padrão.
Esses números são relatos do CLI, sem cálculo de cobrança ou acesso à quota global da conta. Cache e raciocínio são dimensões separadas e não devem ser somados novamente a totalTokens. A skill orienta o Codex a informar o consumo disponível ao concluir ou relatar falhas.
Papéis de trabalho
antigravity_run aceita os papéis nativos "implementer" (padrão), "planner" e "reviewer", além dos nomes personalizados anunciados por antigravity_roles. As bases de planejamento e revisão usam obrigatoriamente mode: "read-only" e agy --mode plan; selecionar escrita nesses papéis é recusado. A retomada mantém o papel e a definição originais.
Os papéis de consulta exigem suporte a agy --json-schema. O planejamento devolve summary, steps com arquivos e verificações observáveis, e unverified. A revisão devolve summary, reviewedFiles, findings e unverified; cada achado contém gravidade P0–P3, caminho, linha, citação literal, mensagem, impacto e sugestão.
O relatório validado aparece em task.report na resposta completa. Com resposta compacta, use antigravity_read_result para ler o structured_output original do CLI. Relatórios são identificados como agy-reported; na revisão, citationsChecked: true significa que arquivos e citações foram conferidos, sem atestar a interpretação ou provar ausência de defeitos. Formato inválido, arquivos inexistentes ou citações inventadas impedem a conclusão normal da tarefa. Uma resposta de planejamento não significa que suas etapas foram executadas.
Ler respostas grandes em partes
Use antigravity_preview com includePatch: false para obter arquivos, estatísticas, hash e patchLength sem enviar o diff inteiro. Depois chame antigravity_read_patch com expectedSha256 e, opcionalmente, um path devolvido na prévia. A seleção é feita pelo Git, incluindo arquivos binários e caminhos com espaços; não depende de interpretar cabeçalhos do patch. Qualquer alteração do patch completo invalida a leitura, mesmo quando você seleciona apenas um arquivo.
antigravity_result aceita includeResult: false para omitir o resultado bruto, o prompt, relatórios transferidos, instruções do papel e a lista completa de arquivos da cópia. Quando ready: true, consulte antigravity_read_result para ler o resultado serializado como JSON. Guarde contentSha256 e envie-o como expectedContentSha256 nas páginas seguintes para detectar mudanças.
Os leitores recebem offset (padrão 0) e limit (padrão 10.000, entre 2 e 50.000). Retornam text, nextOffset, hasMore, totalLength e contentSha256. Concatene text até hasMore: false; use sempre o nextOffset devolvido. Os offsets usam unidades UTF-16 e o leitor preserva caracteres representados por pares substitutos, como emojis. As opções antigas continuam devolvendo o conteúdo inteiro quando os campos de omissão não são usados.
Defina acceptanceCriteria antes de iniciar uma tarefa. Cada critério tem id, description e, opcionalmente, check com kind, path e text. As verificações disponíveis são file-exists, file-absent, file-contains e file-not-contains; as duas últimas exigem text. Critérios são preservados em retomadas e não podem ser substituídos depois da execução.
Após revisar o patch, chame antigravity_verify com o hash atual e reviews. Para cada critério, informe criterionId, verdict (passed, failed ou unverified), path, line, quote e explanation. O bridge lê os arquivos da cópia, executa as verificações e confere se a citação corresponde exatamente à linha indicada. Uma alegação do Gemini, um resultado SUCCESS ou um registro de teste do cliente não substitui essas evidências.
A integração exige todos os critérios aprovados e uma revisão atual. Critérios ausentes ou pendentes geram VERIFICATION_REQUIRED. Alterações no patch ou nos arquivos usados como evidência invalidam a verificação, inclusive alterações em arquivos ignorados que não aparecem no diff. O servidor verifica novamente após a confirmação humana. A prévia inclui verification e stale.
As verificações automáticas demonstram apenas as condições declaradas; a correção funcional mais ampla depende dos testes pertinentes e da revisão do Codex. O parecer permanece identificado como client-reported: conferir uma citação não demonstra que sua interpretação está correta. Esse fluxo aplica a distinção entre alegação e estado final e combina verificações determinísticas com revisão, conforme a orientação sobre avaliações de agentes.
Eventos, sessões e cancelamento
O bridge exige suporte aos formatos stream-json e a --sandbox, conferidos na descoberta do CLI. A versão verificada neste projeto é agy 1.3.2. Eventos estruturados chegam como NDJSON; diagnósticos de stderr permanecem separados. Linhas inválidas são expostas como stream.unparsed. O EventStore mantém um buffer limitado: truncated: true indica perda de eventos antigos. Registros de tarefas, sessões, eventos disponíveis, preferência de modelo e referências às cópias são persistidos por escrita atômica em ~/.antigravity-mcp-bridge (ou BRIDGE_STATE_DIRECTORY). O estado contém prompts e resultados: mantenha esse diretório privado, fora dos projetos versionados e de pastas compartilhadas.
Locks do estado privado conferem a identidade do arquivo e um token de posse antes da liberação. A recuperação de um proprietário confirmado como encerrado é serializada entre processos. Locks incompletos, arquivos substituídos e uma recuperação interrompida permanecem protegidos para inspeção local, com STATE_BUSY; a liberação repetida de um lock já encerrado é idempotente. O StateStore não possui suporte genérico a armazenamento em nuvem. Em ambientes sincronizados como OneDrive, a tolerância a variações na contagem de links (nlink) aplica-se exclusivamente à leitura de assets com descritor confiável, tamanho e SHA-256 fixados, ao staging da fonte do Node portátil com expectedSha256, e ao lock de preparação do Node portátil (preservando device, inode, tamanho e nonce/payload exato, com unlink apenas da entrada do próprio processo para preservar aliases). Hash, tamanho, identidade, marcas de reparse e layout continuam estritamente obrigatórios; conteúdo alterado é recusado e aliases não são modificados. Destinos de runtime, executáveis genéricos e concessões de ACL continuam exigindo link único.
Modelo padrão
Defina BRIDGE_DEFAULT_MODEL com um ID devolvido por agy models para o padrão inicial. antigravity_set_model grava a preferência no estado privado, compartilhada por servidores que usam o mesmo diretório. A prioridade é: model da tarefa, preferência salva, variável de ambiente e padrão do agy. A seleção é conferida contra a lista atual antes de executar; IDs indisponíveis causam MODEL_NOT_AVAILABLE.
Passe model: null para Auto: por tarefa, ignora os padrões do bridge; em antigravity_set_model, persiste o padrão do agy mesmo quando a variável está configurada. Omitir model preserva a preferência vigente. Para voltar ao padrão inicial do ambiente, pare o servidor e remova somente model-selection.json do diretório privado de estado.
antigravity_resume usa o conversation_id de uma tarefa concluída, inclusive após reinício, e reutiliza sua cópia isolada. Use antigravity_tasks para recuperar IDs e antigravity_sessions para consultar sessões persistidas. Execuções interrompidas não são repetidas automaticamente: recebem SERVER_RESTARTED quando o processo anterior já terminou. Se o PID registrado ainda estiver vivo, a cópia fica bloqueada com ORPHAN_PROCESS_RUNNING; o bridge não encerra processos recuperados apenas por PID. Tarefas de outro servidor ativo podem ser acompanhadas, mas devem ser canceladas no servidor que as iniciou. Locks locais impedem uso simultâneo da mesma cópia. O cancelamento encerra o subprocesso local; alterações parciais na cópia podem permanecer e devem ser revisadas.
Em cancelamentos e timeouts, a primeira intenção registrada prevalece (TASK_CANCELLED ou TASK_TIMEOUT), acionando o encerramento do processo e descendentes, sem garantia perfeita para processos que escapem do grupo de processos ou de permissões do sistema operacional. Diagnósticos estruturados diferenciam falhas de execução e ciclo de vida: AGY_NOT_FOUND (executável ausente), AGY_PERMISSION_DENIED (acesso negado ao binário), AGY_PROBE_FAILED (falha na sondagem inicial), AGY_INCOMPATIBLE (falta de suporte a stream-json ou --sandbox), CLI_INPUT_FAILED (falhas de stdin, EPIPE ou EOF prematuro), AGY_IO_FAILED (erros de I/O em streams) e AGY_PROCESS_FAILED (saída anômala do processo). Mensagens de erro de ferramentas externas podem conter segredos desconhecidos; o bridge aplica redaction a formas e padrões conhecidos de erro e suas operações não adicionam valores de credenciais aos logs nem passam tokens como argumentos, sem prometer ausência absoluta.
Ao fim de cada execução do CLI, inclusive com sucesso, o bridge observa novamente os processos pertencentes à execução e registra processCleanup. No Windows, a árvore é reconstruída por PID pai e horário de criação a partir do instante do spawn, o que exclui PIDs reutilizados; cada processo é encerrado e sua ausência é confirmada em até 3 s. Em POSIX, o grupo de processos próprio é encerrado e sua ausência é confirmada. Quando a confirmação falha, processCleanup.verified fica false e retomadas, testes, integrações e mensagens dessa cópia são recusados com PROCESS_CLEANUP_UNVERIFIED até uma nova observação confirmar o encerramento. Limite: no Windows, descendentes cujo processo intermediário já terminou não podem ser associados pelo PID pai e não entram na verificação.
Cópia, revisão e integração
Antes de chamar agy, o bridge cria uma cópia temporária dos arquivos elegíveis e mantém um baseline Git separado da cópia. O CLI recebe a cópia como diretório de trabalho e a opção --sandbox. O projeto original só muda por antigravity_integrate, depois da revisão do patch. O bridge não faz commit, merge nem push.
Antes de copiar, o bridge executa um preflight preventivo de segredos APÓS as exclusões do Git e a seleção por includePaths, e ANTES da cópia dos arquivos. O preflight bloqueia .env, .env.local e outras variantes .env.* (exceto .env.example, .env.sample, .env.template e .env.dist, que ainda passam por inspeção de conteúdo), .envrc, chaves privadas, keystores, autenticação conhecida e padrões de credenciais com alta confiança por conteúdo. Certificados, chaves públicas e fixtures sintéticas para testes permanecem permitidos. O evento copy.ready informa blockedFiles contendo apenas path e reason (SECRET_FILE, SECRET_CONTENT, SECRET_EXCLUSION, UNSAFE_PATH), nunca expondo o conteúdo do arquivo. O preflight não garante detectar segredos arbitrários em código, formatos desconhecidos ou dados criptografados.
Quando o CLI anuncia --add-dir e --new-project, o bridge declara a cópia como workspace e cria um projeto CLI separado na primeira execução. A retomada preserva o projeto da conversa. Essas opções não equivalem a uma comprovação de todas as fronteiras do sandbox; permissões negadas continuam sendo respeitadas.
O resultado informa copyDirectory e includedFiles. Cópias temporárias permanecem para revisão por 7 dias após a última tarefa finalizada. O servidor limpa cópias expiradas na inicialização e a cada minuto; antigravity_cleanup permite antecipar a verificação. Use antigravity_discard para remover imediatamente uma cópia pelo MCP. Tarefas retomadas compartilham a mesma cópia; todas perdem acesso após descarte. Cópias em uso são preservadas. A expulsão do último registro pelo limite de retenção também remove sua cópia. isolateWorktree: true é aceito apenas por compatibilidade e usa o mesmo fluxo de cópia; false é recusado.
antigravity_preview preserva files, patch e sha256 e acrescenta summary (totais A/M/D, linhas e arquivos binários), fileSummaries (inserções/remoções por caminho) e tests. Binários usam null nas contagens de linhas. Registros de antigravity_record_test têm source: "client-reported": são relatos cujo comando o bridge não executou. Registros capturados por antigravity_test indicam o executor que os observou. Cada registro leva hash, data, exit code e saída limitada pela seleção do teste; o padrão é 4.000 caracteres. Resultados antigos recebem stale: true quando a evidência já não corresponde aos arquivos atuais. Falhas são preservadas e devem ser apresentadas na revisão.
A cópia aceita até 10.000 arquivos e 256 MiB por padrão (MAX_COPY_FILES e MAX_COPY_BYTES), limites estritamente respeitados durante o scan preliminar e durante a cópia. A seleção é medida antes da criação e os bytes efetivamente copiados são conferidos novamente para detectar crescimento da origem. Qualquer mudança de identidade, tamanho ou hash falha a operação com SOURCE_CHANGED ou CONTEXT_CHANGED, e a criação da cópia (fork) não omite silenciosamente arquivos de baseline que venham a virar credencial. includePaths pode reduzir a seleção. Mais de 100 arquivos alterados gera CHANGE_LIMIT_EXCEEDED ao finalizar, revisar ou integrar. O original permanece intacto; reduza a tarefa ou ajuste os limites explicitamente no ambiente do servidor.
Executar testes sem Docker
Chame antigravity_test com taskId, expectedSha256 e command: { executable, args }. A ferramenta inicia uma continuação na mesma cópia e devolve outro taskId. Acompanhe esse ID pelos eventos e pelo resultado; revise e integre a tarefa mais recente. retries vale 0 por padrão e aceita até 3 tentativas de correção adicionais, solicitadas explicitamente. timeoutSeconds vale 600 por padrão.
Se uma tentativa local do Windows falhar na infraestrutura, uma chamada explícita de antigravity_test pode criar outra tentativa após a recuperação nativa das leases. O registro anterior permanece falho. Essa repetição exige a prévia e o hash atuais e é recusada enquanto houver execução ativa ou recuperação inconclusiva. Ela não habilita testes de sessões do CLI canceladas, expiradas ou com falhas de modelo.
A limpeza confere o caminho e a identidade dos temporários próprios. Um temporário comprovadamente ausente não invalida os demais resultados de limpeza; substituições ou links detectados impedem sua remoção. As verificações de Job, perfil, aliases e permissões continuam obrigatórias.
No Windows, o bridge cria um processo AppContainer/LPAC por execução e executa o comando diretamente nessa fronteira. O perfil, o SID e as ACLs de acesso são exclusivos da execução; as concessões exatas são removidas ao final. A limpeza e a recuperação de uma execução interrompida são verificadas em processos novos. Uma queda de energia não remove essas ACLs instantaneamente: a recuperação seguinte precisa concluí-la, e uma falha de limpeza impede que o teste seja considerado verificado e bloqueia novo uso daquela concessão.
O executor Windows não instala Docker nem pede elevação UAC. Ele exige o compilador .NET Framework já existente no Windows para criar o controlador. Cada execução é isolada em um perfil novo; a cobertura atual inclui recuperação de processo e nova execução, mas não afirma uma reinicialização física do computador.
Para expor os diretórios próprios da execução, o controlador cria aliases temporários em dois níveis para a cópia, o runtime preparado e o scratch: um nome DOS e uma letra entre D: e Z: para cada diretório. São necessárias três letras livres. O controlador confere a identidade e o destino de cada mapeamento antes, durante e depois do comando e os remove na limpeza, inclusive ao recuperar uma execução interrompida. Esses nomes DOS ficam visíveis apenas no contexto de logon atual; a reserva por letra é coordenada por logon e letra. Eles não concedem acesso à raiz do volume, não criam um mount persistente e não pedem UAC.
Fora do Windows, ou com BRIDGE_TEST_EXECUTOR=agy, o bridge mantém o caminho legado: agy --sandbox e run_command, com recibo vinculado à chamada exata. Não há fallback para executar diretamente no host. Em todos os casos, um comando não zero produz TEST_FAILED, mudanças nos arquivos durante/depois do comando produzem TEST_CHANGED_PATCH, e a evidência precisa continuar atual para integração.
No Windows, a evidência tem source: "windows-executor" e sandbox: "windows-lpac"; fora dele, tem source: "agy-tool" e sandbox: "agy-native-requested". A evidência inclui seleção de sandbox, hash da política, saída limitada e fingerprints antes/depois. A execução local conhecida registra zero tokens de modelo. Se uma correção pelo agy for solicitada após uma falha, seus contadores continuam sendo somente os devolvidos pelo CLI; campos ausentes permanecem null.
Saída ou texto do modelo, inclusive uma afirmação de que o comando passou, não é recibo de teste. Use somente a evidência observada pelo executor escolhido, com seu exit code e os campos de sandbox correspondentes.
No Windows, o bridge preenche PATHEXT ausente no subprocesso com .COM;.EXE;.BAT;.CMD, para que o PowerShell encontre os executáveis instalados. Valores definidos pelo cliente, inclusive um valor vazio, são preservados. O SDK pode omitir essa variável no ambiente herdado, fazendo node parecer ausente mesmo quando o arquivo está instalado. A correção vale para as sondagens e para todas as tarefas, sem configuração por projeto.
No Windows, use um .exe nativo ou npm/npm.cmd. Para npm, o bridge valida o launcher instalado, seu pacote e npm-cli.js, e chama o node.exe preparado com os argumentos literais. Lotes .cmd/.bat arbitrários e outros interpretadores não são suportados pelo executor. O staging rejeita caminhos remotos, dispositivos, streams alternativos e NUL; só o runtime validado é copiado sob limites de tamanho. Destinos de runtime, executáveis genéricos e concessões de ACL (grants) continuam exigindo link único; arquivos preparados pelo usuário não podem usar links; o cmd.exe interno deriva de um caminho fixo do Windows.
Para testes Node/npm e comandos git diretos no Windows, o executor prepara automaticamente o Git for Windows descoberto no PATH quando instalado, resolvendo launchers de cmd e bin para o binário nativo em ucrt64/bin ou mingw64/bin quando há um layout conhecido. Executáveis nativos e instalações standalone são preservados; layouts conhecidos sem binário válido ou com links inseguros são recusados. Copiam-se somente binários PE, DLLs e helpers públicos para um runtime isolado em modo somente leitura com links únicos no destino; arquivos de origem podem conter hardlinks na instalação original, mas ela não recebe ACLs nem concessões. O PATH preserva exclusivamente os diretórios do runtime preparado e o System32 exato; GIT_EXEC_PATH aponta para o diretório no alias do runtime, a configuração global aponta para arquivo ausente no scratch e definem-se GIT_CONFIG_NOSYSTEM=1 e GIT_TERMINAL_PROMPT=0. Entradas injetadas de GIT_CONFIG_COUNT, GIT_CONFIG_KEY_*, GIT_CONFIG_VALUE_* e GIT_CONFIG_PARAMETERS são removidas, e o ambiente do comando estabelece a confiança protegida de safe.directory restrita exclusivamente à lista exata dos depósitos verificados presentes na cópia no início da execução: reset vazio (VALUE_0=''), raiz do alias da cópia verificada (VALUE_1) e raízes dos depósitos descendentes com diretório .git verificado dentro da cópia (VALUE_2..N), sem wildcard * e sem confiar fora da cópia. Novos depósitos criados após a admissão continuam sujeitos às checagens normais do Git. Não há herança de .gitconfig, credenciais ou chaves, nem download de Git. A ausência de Git é opcional e não impede testes Node/npm sem Git, enquanto comandos que necessitam de Git falham se ele estiver ausente. Os limites de cópia permanecem obrigatórios (arquivos do Git contam para o teto), sem concessões extras para a pasta de instalação e sem fallback ao host ou ampliação de rede.
Novos repositórios temporários criados no sandbox usam o formato reftable via GIT_DEFAULT_REF_FORMAT=reftable definido somente no ambiente isolado quando o Git está preparado. O Git instalado deve suportar esse formato; a configuração não converte repositórios existentes nem altera o Git no host. O backend tradicional files e versões do Git sem suporte a reftable possuem limitação no LPAC ao consultar diretórios pais privados (sem alegação de suporte universal). A configuração não afrouxa as proteções de sistema de arquivos: diretórios pais privados continuam com acesso negado, sem novas concessões, sem UAC e sem fallback ao host.
Quando o Git está preparado, o controlador consulta a permissão do dispositivo Null do Windows. Se a regra padrão de LPAC já permite leitura e escrita, essa consulta não altera a ACL nem solicita WRITE_DAC. Caso o acesso esteja ausente e o token atual permita WRITE_DAC, o controlador registra uma concessão temporária somente para o SID exclusivo da execução. A limpeza verifica que o Job está vazio antes de remover acessos; uma recuperação inconclusiva mantém o lease e bloqueia a execução. A falta de permissão produz um diagnóstico sem solicitar elevação.
Compatibilidade de subprocessos Node no Windows LPAC
No Node 24.14.1 com libuv 1.51, child_process.spawnSync com pipes padrão de stdin/stdout/stderr cria endpoints globais \\?\pipe\uv\.... O LPAC recusa o CreateNamedPipe global com erro 5, enquanto endpoints equivalentes LOCAL\... abrem. A captura de stdout/stderr do processo pai está corrigida; no Node 24.14.1 do sistema, esse caso com pipes padrão ainda expira com exit code 124.
Testes de filhos com stdio: "inherit" e do ciclo real do npm passaram, mas não demonstram compatibilidade geral de subprocessos porque não exercitam os pipes capturados por padrão. Não substitua os pipes por stdio herdado para apresentar essa falha como resolvida.
O PR 5181 do libuv corrige os nomes de pipe para AppContainer e a correção entrou no libuv 1.53. O runtime portátil Node 24.21.0 LPAC1 para Windows x64, com libuv base 1.52.1 e somente esse PR aplicado, já está publicado em Release imutável e disponível para preparação explícita. Esse build passou pela regressão LPAC de spawnSync com pipes padrão capturados (1 teste) e pelos testes de isolamento e ciclo de vida (22 testes, sem falhas nem skips). A validação se aplica a esse build fixado.
network: true concede somente as capacidades Windows internetClient e privateNetworkClientServer, que permitem tráfego de Internet e LAN privada bidirecional. Não há capacidades arbitrárias, exceção para localhost, alteração de firewall nem acesso de rede quando a seleção não o permite. childProcesses e maxOutputChars também ficam limitados pela política aprovada.
Para testar com a conta real em um projeto descartável, execute npm run build e node tests/native-integration.mjs. Esse teste usa a conta do agy e verifica a captura de uma execução real; a suíte padrão usa o CLI simulado e não consome quota.
Configuração e segurança
Variável | Padrão | Uso |
|
| Modo de aprovação: |
|
| Até 20 papéis em JSON com nome, base e instruções |
|
| Catálogo: |
|
| Executor de |
|
| No Windows, usa |
|
| Diretório confiável opcional, fora dos projetos, para compartilhar o cache portátil entre diretórios de estado; não é entrada MCP |
|
| Caminho do CLI oficial |
|
| Processos simultâneos |
|
| Tarefas aguardando |
|
| Tarefas persistidas retidas |
|
| Prazo máximo por execução |
|
| Eventos mantidos em memória |
|
| Entradas privadas globais; até 10.000 |
|
| Texto privado global em UTF-8; até 64 MiB |
|
| Texto por entrada; até 1 MiB, sem exceder o limite global |
|
| Diretório privado de tarefas e sessões |
| vazio | Modelo inicial, usado quando não há preferência salva |
|
| Array JSON de padrões relativos de arquivos que devem ficar fora das cópias |
|
| Objeto JSON estrito na versão 2 contendo padrões glob de nomes relativos que pulam exclusivamente a verificação de nomes de credenciais conhecidas ( |
|
| Array JSON de nomes exatos adicionais de variáveis permitidas nos subprocessos do CLI |
|
| Máximo de arquivos selecionados para a cópia |
|
| Máximo de bytes copiados (256 MiB) |
|
| Máximo de arquivos alterados para revisão e integração |
|
| Prazo de retenção das cópias finalizadas |
|
| Tamanho máximo do prompt enviado, incluindo critérios, contexto transferido e instruções do bridge e do papel |
| vazio | Diretórios bloqueados, separados por |
Entradas e diretórios são validados. Configurações de ambiente devem ser registradas de modo persistente no ambiente privado de inicialização do servidor (atribuições de exemplo no PowerShell como $env:VAR = ... afetam somente o shell atual); reinicie a conexão MCP após qualquer alteração. Tarefas delegadas usam spawn sem shell e exigem --sandbox; não passam --dangerously-skip-permissions. Testes Windows usam o executor LPAC do bridge por padrão. Não inclua credenciais ou documentos privados nos prompts. Mantenha arquivos sensíveis fora da cópia por regras de ignore e selecione apenas os caminhos necessários com includePaths. Consulte a documentação do sandbox e do modo headless.
Padrões de exclusão e exceção de segredos
Os padrões em BRIDGE_SECRET_EXCLUSIONS são definidos como um array JSON de strings com caminhos relativos à raiz do projeto. Já BRIDGE_SECRET_EXCEPTIONS adota formato de objeto JSON versionado estrito: {"version": 2, "namePatterns": ["fixtures/.env.local"]}. Ambos suportam curingas glob: * (segmento individual), ? (um caractere) e ** (múltiplos diretórios), sem permitir travessia de diretório (..), caracteres NUL ou caminhos absolutos. Nomes sem barra correspondem ao nome base (basename) em qualquer diretório; **/ e /**/ correspondem a zero ou mais diretórios intermediários. A comparação é insensível a maiúsculas e minúsculas (case-insensitive). Arrays legados não vazios são rejeitados com diagnóstico de migração (sem expor valores sensíveis); a omissão ou um array vazio [] normaliza para política vazia {"version": 2, "namePatterns": []}.
Prefira exceções restritas a arquivos revisados e sem credenciais reais (como o exemplo sintético BRIDGE_SECRET_EXCEPTIONS='{"version": 2, "namePatterns": ["fixtures/.env.local"]}'), evitando padrões glob amplos. Na versão 2, a exceção pula apenas a checagem de nome de arquivo de credencial conhecida (isKnownCredentialFile / SECRET_FILE); todo o conteúdo permitido continua sendo inspecionado pelo scanner de segredos (detectSecretContent / SECRET_CONTENT) e nunca é ignorado por exceções de nome.
A ordem de precedência e segurança é estrita:
Regras de ignore do Git e verificações de caminhos inseguros (
UNSAFE_PATH) SEMPRE vencem e têm prioridade máxima sobre qualquer exceção.Deny explícito (
BRIDGE_SECRET_EXCLUSIONSgerandoSECRET_EXCLUSION) sempre vence qualquer exceção (BRIDGE_SECRET_EXCEPTIONS).Exceção explícita v2 (
BRIDGE_SECRET_EXCEPTIONS) pula unicamente o bloqueio padrão de nome de credencial (SECRET_FILE), mantendo integralmente a varredura e bloqueio por conteúdo (SECRET_CONTENT).
O preflight preventivo não garante a detecção de segredos arbitrários embutidos em código-fonte, formatos proprietários ou desconhecidos, dados criptografados ou arquivos ofuscados.
Barreiras de segurança em prévias, contexto e artefatos
A prévia inspeciona nomes e padrões de credenciais conhecidos antes de formar uma cópia dos bytes verificados para staging no Git privado, restaurando o índice privado com read-tree HEAD ao final. A leitura de patches por arquivo (readProjectPatch) extrai a fatia correspondente diretamente do patch revisado e verificado (preview.patch), vinculando-se estritamente ao mesmo hash SHA-256 e dispensando novas leituras inseguras do índice compartilhado ou da árvore de trabalho. Arquivos gerados ou modificados que violem a política falham com BLOCKED_FILE_DETECTED; alterações detectadas durante a preparação invalidam a operação. Restaurar o índice não remove objetos que já existiam no banco do Git.
Snapshots, fingerprints e bifurcações aplicam os ignores da origem e da cópia e a política de segredos. Arquivos gerados bloqueados são omitidos; um arquivo do baseline que se torne bloqueado causa CONTEXT_CHANGED. Skills fornecidas e políticas de execução conservam verificações próprias de integridade.
A coleta e a leitura de artefatos reaplicam a política de nomes, conteúdo e exclusões. Violações de segredo falham com BLOCKED_ARTIFACT_PATH. A leitura verifica os bytes contra o SHA-256 da inspeção e da referência, mantendo somente a janela solicitada em memória. Referências anteriores não dispensam os controles de caminho e política. Essas verificações cobrem os formatos reconhecidos pelo scanner e não garantem detectar segredos arbitrários nem eliminar toda corrida possível do filesystem.
Ambiente do subprocesso do CLI (cliEnvironment)
O subprocesso do CLI utiliza um ambiente estritamente filtrado por cliEnvironment em vez de herdar o ambiente do host indiscriminadamente. O bridge não registra valores de variáveis de ambiente nem passa tokens como argumentos. A variável BRIDGE_ALLOWED_ENV_VARS aceita um array JSON de nomes exatos adicionais para inclusão (opt-in), por exemplo BRIDGE_ALLOWED_ENV_VARS='["MY_TOOL_SETTING"]'. Por padrão, nenhuma injeção ou variável arbitrária é permitida; a inclusão de variáveis é estritamente opt-in e não é o comportamento padrão. A correspondência respeita as regras de plataforma (case-insensitive no Windows e exata/case-sensitive no Unix/Linux/macOS), preservando a deduplicação e PATHEXT.
Por motivos de segurança, variáveis de injeção de runtime e preload de bibliotecas (NODE_OPTIONS, NODE_PATH e os namespaces LD_* e DYLD_*) são estritamente proibidas para opt-in em BRIDGE_ALLOWED_ENV_VARS e chamadas diretas a cliEnvironment, inclusive com variações de maiúsculas/minúsculas ou espaços em branco em qualquer plataforma. Tentativas de opt-in dessas variáveis falham com erro estruturado nomeando a variável rejeitada, sem jamais ecoar seu valor. Opt-ins de variáveis legítimas não injetáveis, certificados como NODE_EXTRA_CA_CERTS e todos os defaults de sistema, perfil, keyring nativo, proxies, certificados corporativos e autenticação oficial Google / ADC continuam preservados. Demais credenciais de provedores e APIs de terceiros (como AWS, GitHub/GH, OpenAI e Stripe) e agentes locais (SSH_AUTH_SOCK, GPG_AGENT_INFO) continuam omitidos por padrão.
As variáveis padrão permitidas são agrupadas exatamente conforme definido no cliEnvironment:
Resolução de sistema e executáveis:
PATH,PATHEXT,SystemRoot,SystemDrive,ComSpec,WINDIR,SHELL,TERM,COLORTERM.Diretórios de usuário e perfil:
HOME,USERPROFILE,APPDATA,LOCALAPPDATA,HOMEDRIVE,HOMEPATH,USER,LOGNAME,USERNAME.Diretórios temporários:
TEMP,TMP,TMPDIR.Localidade, idioma e fuso horário:
LANG,LC_ALL,LC_CTYPE,LC_MESSAGES,TZ.Diretórios base XDG e autenticação de sessão / keyring nativo:
XDG_CONFIG_HOME,XDG_DATA_HOME,XDG_CACHE_HOME,XDG_RUNTIME_DIR,XDG_DATA_DIRS,XDG_CONFIG_DIRS,DBUS_SESSION_BUS_ADDRESS,GNOME_KEYRING_CONTROL,GNOME_KEYRING_PID,SECURITYSESSIONID.Contexto de sessão remota SSH (sem credenciais):
SSH_CONNECTION,SSH_CLIENT,SSH_TTY.Configurações de rede e proxy:
HTTP_PROXY,HTTPS_PROXY,ALL_PROXY,NO_PROXY,http_proxy,https_proxy,all_proxy,no_proxy.Certificados SSL/TLS (corporativos e raízes customizadas):
SSL_CERT_FILE,SSL_CERT_DIR,REQUESTS_CA_BUNDLE,CURL_CA_BUNDLE,NODE_EXTRA_CA_CERTS.Autenticação oficial Google / Gemini e endpoints customizados:
GEMINI_API_KEY,GOOGLE_GEMINI_BASE_URL,GOOGLE_APPLICATION_CREDENTIALS,GOOGLE_CLOUD_PROJECT,GCLOUD_PROJECT,GOOGLE_CLOUD_UNIVERSE_DOMAIN.Ambiente Windows, arquitetura e contexto de domínio:
OS,PROCESSOR_ARCHITECTURE,PROCESSOR_ARCHITEW6432,NUMBER_OF_PROCESSORS,ProgramData,ProgramFiles,ProgramFiles(x86),CommonProgramFiles,CommonProgramFiles(x86),USERDOMAIN,USERDNSDOMAIN,COMPUTERNAME.
Erros comuns e diagnósticos estruturados incluem AGY_NOT_FOUND, AGY_PERMISSION_DENIED, AGY_PROBE_FAILED, AGY_INCOMPATIBLE, CLI_INPUT_FAILED, AGY_IO_FAILED, AGY_PROCESS_FAILED, TASK_CANCELLED, TASK_TIMEOUT, AGY_AUTH_REQUIRED, MODEL_NOT_AVAILABLE, INVALID_WORKING_DIRECTORY e QUEUE_FULL. Se houver AGY_AUTH_REQUIRED, faça login no agy interativo. Se as ferramentas não aparecerem no Codex, confirme a instalação com codex plugin list --json e abra uma conversa nova.
Testes
npm.cmd run typecheck
npm.cmd run lint
npm.cmd test
npm.cmd run build:plugin
npm.cmd run test:packagenpm test usa um mock do agy e não consome quota. npm run test:package também consulta o status do runtime pelo pacote empacotado; em plataformas fora do Windows ele deve informar supported: false sem preparar nada. A integração real é opcional: npm run test:integration cria um repositório descartável, executa uma tarefa pelo cliente MCP, confere que o original permanece intacto até a integração e remove o repositório. Esse teste simula a resposta de confirmação somente para seu projeto descartável; a confirmação humana da interface deve ser usada nos projetos reais. Execute-a apenas com agy autenticado e quando quiser usar a conta real.
Licença e políticas
O projeto usa a licença MIT. Consulte a política de segurança, a política de privacidade, o histórico de versões e os avisos das dependências distribuídas. npm run build:plugin atualiza o bundle e os avisos a partir das dependências efetivamente incluídas.
Available Tools
23 toolsantigravity_cancelCancel Antigravity taskA
Cancel a queued task or terminate its local agy process.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| task | No | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=false and readOnlyHint=false, so the agent already knows this is a state-changing but non-destructive operation. The description adds the meaningful distinction between cancelling a queued item and killing a live process, but it does not say what happens on failure, whether cancellation is reversible, or what state the task ends in. Terminating a process sits in mild tension with destructiveHint=false, though this is a hint-scope ambiguity rather than a clear contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence with the two operating modes front-loaded and zero filler. Nothing to trim and nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. The description covers both cancel paths but leaves open the practical questions an agent faces: behavior on an already-finished task, required permissions, and effects on subsequent antigravity_result/antigravity_status calls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single required taskId parameter and 0% schema description coverage, so the description would ideally clarify which id it expects. It names no parameter at all; the schema's uuid format and pattern do the documenting instead, making the description neutral rather than additive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair (cancel/terminate) and the exact targets (a queued task, its local agy process), which is more informative than the title alone. It does not, however, distinguish itself from nearby siblings like antigravity_discard or antigravity_cleanup, so the agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Phrasing implies the tool applies to a queued task or a running local process, which is a useful contextual hint. There is no explicit when-to-use/when-not guidance and no mention of the alternatives (discard, cleanup) for stopping or removing work.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
antigravity_cleanupClean expired isolated copiesADestructive
Remove finished copies older than COPY_RETENTION_HOURS. Active copies are preserved.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| discardedTaskIds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and closed-world, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that by naming exactly what is destroyed (finished copies past retention) and what is protected (active copies), which is precisely the context that matters for a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with zero waste. The destructive scope leads and the preservation guarantee follows, which is the right ordering for an agent deciding whether to call it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and there are no parameters to document. The description covers scope and safeguards adequately for a zero-argument cleanup; it omits only peripheral details such as whether COPY_RETENTION_HOURS is configurable or what permissions are needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. No parameter semantics gaps exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Remove) and resource (finished copies older than COPY_RETENTION_HOURS) plus a scoping rule (active copies preserved). It does not explicitly contrast itself with similar siblings like antigravity_discard or antigravity_cancel, so an agent must infer that this is the bulk/expiry-based cleanup rather than the single-item removal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the retention rule signals when it applies, but there is no explicit when-to-use/when-not guidance and no named alternative for targeted removal. An agent can infer the intent but is not steered away from misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
antigravity_discardDiscard an isolated copyADestructive
Delete the copy and baseline of a finished task, including resumed tasks sharing that copy. Active copies are refused. The source project is preserved.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| task | No | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the bar is lower, yet the description adds real value: what is destroyed (copy AND baseline, plus resumed tasks sharing that copy), a refusal rule for active copies, and the reassuring fact that the source project is preserved. It stops short of noting irreversibility or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earning its place, with the core action front-loaded and the constraints following. No filler or repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and annotations cover the safety profile. The description supplies the destructive scope, refusal condition, and preservation guarantee, leaving only minor gaps such as permissions or irreversibility wording.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single taskId parameter carries no schema text, so the description is the only source of context. It establishes that the operation targets a task, which implicitly scopes the ID, but adds no detail on the taskId itself (format, whether it must reference a finished task, etc.).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (delete/discard) and resource (the copy and baseline of a finished task), including the resumed-tasks-sharing-copy case. It is clear what the tool does, but it never differentiates itself from closely related siblings like antigravity_cancel or antigravity_cleanup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage ('of a finished task') and states a precondition ('active copies are refused'), which helps the agent understand when it will fail. However, it names no alternatives or when-not conditions relative to cancel/cleanup siblings, so the routing guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
antigravity_eventsRead Antigravity eventsBRead-only
Read live normalized agy events after a sequence cursor. Includes original agy event payloads.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| limit | No | ||
| taskId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| events | No | |
| truncated | No | |
| nextCursor | No | |
| oldestAvailable | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/non-destructive/non-openWorld, so safety is covered. The description adds real behavioral context beyond that: events are 'live', 'normalized', returned 'after a sequence cursor', and include original payloads. It omits pagination/limit behavior and termination semantics, keeping it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and scope. The second sentence is return-value detail that borders on redundant given the output schema exists, but it is not wasteful enough to drop below a 4.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists so return values need little explanation, and annotations cover safety. However, with a required taskId and a limit parameter at 0% schema coverage, and no guidance on cursor advancement or loop termination, the definition is only minimally sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the burden. It explains the `after` cursor implicitly, but says nothing about `limit` (max 1000) or the required `taskId`, leaving two of three parameters undocumented anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb ('Read') and resource ('events') plus a cursor-based retrieval mode, but 'agy' is undefined jargon and nothing distinguishes it from siblings like antigravity_status or antigravity_result, which an agent could easily confuse with an event stream.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'after a sequence cursor' hints at incremental polling, but there is no explicit when-to-use, no when-not-to-use, and no named alternative (e.g., status vs. events). The agent must infer the polling pattern.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
antigravity_get_modelGet selected modelARead-only
Return the default model selected for subsequent bridge tasks. Null means agy chooses its own default.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| model | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe read-only, non-destructive, closed-world profile, so the bar is lower. The description adds genuinely useful behavior by explaining that a null result means agy falls back to its own default, which is not derivable from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the core purpose front-loaded and the null-handling caveat immediately after. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value structure need not be documented, and the description still covers the one ambiguous case (null). For a zero-parameter read-only getter, nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. There is no parameter syntax to clarify, and the sentence about null concerns the return value rather than inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Return the default model selected') and clarifies scope with 'for subsequent bridge tasks'. It is distinguishable from antigravity_set_model and antigravity_list_models by the word 'selected', though it does not explicitly name those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this reads the current selection before calling antigravity_set_model, but the description never states when to use it versus antigravity_list_models or antigravity_status. No prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
antigravity_healthCheck Antigravity CLIBRead-only
Inspect installed agy version, authentication and supported capabilities.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| path | No | |
| error | No | |
| version | No | |
| installed | No | |
| capabilities | No | |
| authenticated | No | |
| integrationApproval | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds which facets are checked (version, auth, capabilities), but says nothing about cost, latency, or side effects like cache refresh — adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence that front-loads the verb and lists the inspected facets. No filler, though it is terse enough that it could have afforded one clause of usage context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With zero parameters and an output schema present, the description need not explain return values, so the coverage of what is inspected is sufficient for an agent to call it correctly. Only usage routing to sibling diagnostics is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing to disambiguate, and the description adds no contradictory parameter claims.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Inspect') and enumerates the resource facets: installed agy version, authentication, and supported capabilities. This clearly separates it from sibling tools like antigravity_status or antigravity_usage, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is given. It is only implied by the word 'Inspect' that this is a diagnostic/health probe, and there is no indication of when to prefer it over antigravity_status or the other read-oriented siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
antigravity_integrateIntegrate reviewed changesADestructive
Request human confirmation through MCP form elicitation, then apply the reviewed patch. Requires the SHA-256 from antigravity_preview. Clients without form elicitation cannot integrate; no tool argument substitutes for user confirmation.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | ||
| expectedSha256 | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| files | No | |
| patch | No | |
| sha256 | No | |
| summary | No | |
| copyDirectory | No | |
| fileSummaries | No | |
| sourceDirectory | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, but the description adds non-obvious behavior: a mandatory human-confirmation flow via form elicitation that precedes the mutation, and a client-capability gate. This is exactly the kind of context annotations cannot convey, and it does not contradict them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences: operation, prerequisite, and constraint, ordered by importance. No filler and no repetition of schema or annotation content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the mutation, its prerequisite, and the confirmation gate, and an output schema exists so return values need no explanation. The only gap is the undefined taskId, minor given its self-evident naming and the 0% schema description coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It partially does for expectedSha256 by tying it to the antigravity_preview SHA-256, but taskId is never explained and no format/source detail is added beyond the regex and pattern in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific operation ('apply the reviewed patch') preceded by a distinct step ('request human confirmation through MCP form elicitation'), which is more precise than the title alone. The mention of antigravity_preview as the source of the SHA distinguishes it from siblings like antigravity_preview, antigravity_verify, and antigravity_discard.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the prerequisite ('Requires the SHA-256 from antigravity_preview') and the disqualifying condition ('Clients without form elicitation cannot integrate'), and rules out workarounds ('no tool argument substitutes for user confirmation'). The agent knows both when to call it and when it will fail.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
antigravity_list_modelsList Antigravity modelsBRead-only
List model IDs actually returned by agy models for this account.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| models | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds one genuinely useful behavioral fact — the list is dynamic, reflecting what the backing CLI actually returns for this account rather than a static catalog. It does not mention caching, refresh, or empty-result behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the account qualifier is attached directly to the resource. It is arguably too terse to carry usage routing, but nothing in the text is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no elaboration, and a 0-parameter read-only list tool has a very small surface to document. The account-specific, runtime-derived nature of the result is stated, which is the main thing an agent could get wrong. Only the sibling relationship is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. The account scoping statement is the only relevant context and it is present.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (model IDs) and scopes it to the current account, which distinguishes it from antigravity_set_model and antigravity_get_model. The phrase 'actually returned by agy models' is slightly cryptic (it presumes knowledge of an external CLI command) but the intent — enumerating this account's available models — is recoverable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no reference to the obvious sibling antigravity_get_model, which presumably fetches a single model. The agent must infer that this is the discovery step before set_model, with nothing in the text to confirm or exclude that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
antigravity_list_project_filesList files eligible for a project copyBRead-only
List tracked and untracked files excluding Git ignore and local exclude matches.
| Name | Required | Description | Default |
|---|---|---|---|
| workingDirectory | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| files | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful scope context by specifying that gitignored and locally excluded files are filtered out. However, it says nothing about authentication, rate limits, or how results are ordered/paginated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence that front-loads the filtering semantics with no wasted words. It is perhaps too terse, leaving gaps, but the structure itself is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Low complexity (one read-only parameter) and an output schema exists, so return values need not be explained. Still, the meaning of 'eligible for a project copy' is never clarified and the sole parameter is undocumented, leaving the definition minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single required parameter workingDirectory is never mentioned in the description, so the agent gets no explanation of what path to supply (repo root? any directory?). The description implies a repository context but does not compensate for the documentation gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (files) with meaningful scope qualifiers: tracked, untracked, excluding gitignore/local excludes. This is clearly distinguishable from sibling list tools like list_models, tasks, or sessions, though the description never explicitly contrasts itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no preconditions, and no alternatives named. The title's 'eligible for a project copy' hints at intent, but the description itself never tells the agent when this tool is appropriate versus other antigravity list/status tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
antigravity_previewPreview isolated changesCRead-only
Return A/M/D files, per-file line statistics, totals, binary markers, patch, SHA-256 and client-reported test evidence with stale markers. Requires a finished task.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | ||
| includePatch | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| files | No | |
| patch | No | |
| tests | No | |
| sha256 | No | |
| summary | No | |
| patchLength | No | |
| verification | No | |
| copyDirectory | No | |
| fileSummaries | No | |
| sourceDirectory | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a safe, closed-world, non-destructive read, so the safety profile is covered. The description adds the finished-task precondition and indicates the payload includes 'client-reported test evidence with stale markers', which hints at freshness semantics. It does not describe error behaviour, size limits, or what happens when includePatch is omitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the payload contents and ending on the precondition. It is compact, but the enumerated return fields largely restate what the output schema already provides, so much of the sentence does not earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be enumerated, leaving the description thin on the things that matter: neither input parameter is explained and no sibling differentiation is offered. For a read tool with two undocumented parameters and many similar siblings, it is under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden for taskId and includePatch, yet it explains neither. The mention of 'patch' refers to an output field, not the includePatch input, so it may even muddy which parameter controls patch inclusion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description outlines a diff/preview payload (A/M/D files, stats, patch, SHA-256, test evidence), which conveys what the tool returns and, indirectly, what it does. However it frames the tool as a return-value list rather than a verb+resource, and it names no sibling such as antigravity_read_patch or antigravity_read_result, so the agent cannot distinguish it from those on the description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Requires a finished task" is a genuine state precondition that tells the agent when the call will be valid, which is real usage guidance. There is no routing against alternatives (read_patch, read_result, result) and no statement of when NOT to use it, so usage is only partially covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
antigravity_read_patchRead patch by file or chunkARead-only
Read at most 50000 UTF-16 units of the current patch, optionally selecting a changed path. Bind every read to the full preview hash. Follow nextOffset until hasMore is false. Use preview with includePatch false for metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| limit | No | ||
| offset | No | ||
| taskId | Yes | ||
| expectedSha256 | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | No | |
| text | No | |
| error | No | |
| length | No | |
| offset | No | |
| sha256 | No | |
| taskId | No | |
| hasMore | No | |
| nextOffset | No | |
| offsetUnit | No | |
| totalLength | No | |
| contentSha256 | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false), so the description adds value with the 50000-unit read cap, the 'follow nextOffset until hasMore is false' loop, and the requirement to bind each read to the full preview hash. The hash-binding constraint is a meaningful behavioral detail beyond annotations, though failure behavior on mismatch is left implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short, front-loaded sentences with no filler; the core read action leads, followed by path selection, hash binding, pagination, and the alternative. Every sentence adds distinct operational value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be described, and the description covers pagination, size cap, hash binding, and sibling routing. The only notable omission is the meaning of taskId, but otherwise it is complete for a read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden and largely succeeds: it explains limit (max 50000 UTF-16 units), path (optional changed path), offset (via nextOffset), and expectedSha256 ('bind every read to the full preview hash'). Only taskId is left unexplained, keeping it short of a full 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read ... the current patch') and clarifies scope (up to 50000 UTF-16 units, optional path selection). It also distinguishes itself from the sibling antigravity_preview by routing metadata lookups there, so an agent can tell the two apart without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operating context: select a 'changed path' optionally, 'Follow nextOffset until hasMore is false' for pagination, and use 'preview with includePatch false for metadata' as the alternative. It names an alternative tool but stops short of explicit when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
antigravity_read_resultRead result in chunksARead-only
Read the final CLI result serialized as JSON in bounded chunks. Returns ready false while active. Keep contentSha256 for subsequent requests and reconstruct the JSON by concatenating text.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| taskId | Yes | ||
| expectedContentSha256 | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | No | |
| error | No | |
| ready | No | |
| length | No | |
| offset | No | |
| status | No | |
| taskId | No | |
| hasMore | No | |
| nextOffset | No | |
| offsetUnit | No | |
| totalLength | No | |
| contentSha256 | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a safe read profile (readOnlyHint=true, destructiveHint=false). Beyond that, the description discloses meaningful behavior: a 'ready' flag that is false while active, chunked/bounded retrieval, and a contentSha256 that must be carried across requests and used to reconstruct the JSON by concatenation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero filler, and the core chunked-read purpose is front-loaded. The two operative hints (ready-false polling, sha retention) follow in priority order.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-shape explanation is not required. The description covers the essential chunked-read workflow, but leaves the sha-mismatch/error behavior and the meaning of a non-ready response underspecified for a stateful paging tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 4 parameters, so the description carries the burden. It conveys chunking (limit/offset) and the role of contentSha256, but omits the 2-50000 bounds, offset semantics, and what happens when expectedContentSha256 mismatches — leaving key semantics unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read the final CLI result') and clarifies its distinguishing trait: 'serialized as JSON in bounded chunks.' This differentiates it semantically from the full-result sibling antigravity_result, though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Returns ready false while active' implies a polling loop and 'keep contentSha256 for subsequent requests' implies repeated paged calls, so usage is inferable. However, there is no explicit statement of when to prefer this over antigravity_result or antigravity_status, and no exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
antigravity_record_testRecord review test evidenceA
Record a test already executed by the client in the isolated copy. Bind command, exit code and output to the reviewed patch. These are client-reported results; the bridge does not execute or independently verify the command. Do not include secrets in output.
| Name | Required | Description | Default |
|---|---|---|---|
| output | No | ||
| taskId | Yes | ||
| command | Yes | ||
| exitCode | Yes | ||
| expectedSha256 | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| output | No | |
| sha256 | No | |
| source | No | |
| attempt | No | |
| command | No | |
| sandbox | No | |
| exitCode | No | |
| truncated | No | |
| recordedAt | No | |
| testTaskId | No | |
| treeSha256 | No | |
| executionError | No | |
| beforeTreeSha256 | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, so the agent knows this writes state non-destructively. The description adds valuable context beyond annotations: it clarifies the tool records client-reported results and that the bridge does not execute or independently verify the command. It also warns against including secrets. It does not describe failure modes or what happens on duplicate recordings.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each front-loaded with essential information: action, binding scope, verification stance, security constraint. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be explained. The description covers the key behavioral caveats (client-reported, no verification, no secrets) for a write tool with annotations. It is nearly complete, missing only usage alternatives and some parameter meaning (taskId, expectedSha256).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does by naming what gets bound (command, exit code, output) and the security constraint on output. However, it does not explain taskId or expectedSha256 semantics, leaving two of five parameters undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (record) and resource (client-executed test evidence) with the binding scope stated (command, exit code, output tied to the reviewed patch). It is distinguishable from siblings like antigravity_test (which presumably runs tests) by clarifying that the bridge does not execute the command. Sibling differentiation is implicit rather than naming an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: record a test the client already ran in the isolated copy. However, it does not state when to use this versus antigravity_test or antigravity_verify, nor any preconditions (e.g., patch must be reviewed first). Usage context is implied, not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
antigravity_resultGet Antigravity resultARead-only
Return terminal result, usage and error once the task finishes. Use antigravity_preview for the patch.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | ||
| includeResult | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| task | No | |
| error | No | |
| ready | No | |
| reportAvailable | No | |
| resultAvailable | No | |
| includedFileCount | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds the terminal-state precondition, but says nothing about what happens if the task is still running (error, empty, or block), which is important for a result-retrieval call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no waste, and the core purpose is front-loaded ahead of the sibling redirect.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be spelled out. Still missing: the meaning of includeResult and clarification against antigravity_read_result/antigravity_status, which leaves real ambiguity for an agent choosing among result-oriented siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for two parameters. The description never mentions taskId's UUID format requirement or, more importantly, what includeResult toggles, so the description fails to compensate for the undocumented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb+resource: return terminal result, usage and error once the task finishes. It distinguishes itself from antigravity_preview by scoping that sibling to the patch. However, it does not differentiate from the nearby sibling antigravity_read_result, leaving an overlap an agent must resolve on its own.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the condition that selects this tool ('once the task finishes') and explicitly routes patch retrieval to antigravity_preview. It does not exclude or address antigravity_read_result or antigravity_status, which appear to cover adjacent ground.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
antigravity_resumeResume Antigravity conversationCDestructive
Continue a completed session in its existing isolated copy.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | ||
| role | No | ||
| model | No | ||
| prompt | Yes | ||
| sessionId | Yes | ||
| includePaths | No | ||
| timeoutSeconds | No | ||
| isolateWorktree | No | ||
| workingDirectory | Yes | ||
| acceptanceCriteria | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| task | No | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, and openWorldHint=true. The description adds only that the session continues in an existing isolated copy; it does not explain what 'continue' entails, what may be modified, or any permission or rate-limit context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no wasted words, but it is severely under-specified for a 10-parameter, destructive, open-world tool. Conciseness here reflects omission rather than efficient communication.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and annotations cover the safety profile, so the description need not explain return values. However, for a complex tool with 10 parameters, no schema descriptions, and destructive behavior, the description leaves usage, parameter semantics, and operation details almost entirely unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 10 parameters, and the description mentions none of them. It provides no meaning for prompt, sessionId, workingDirectory, mode, role, model, includePaths, timeoutSeconds, isolateWorktree, or acceptanceCriteria.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Continue') and resource ('a completed session'), with the scope 'in its existing isolated copy.' It is clear what the tool does, but it does not distinguish itself from siblings like antigravity_run or antigravity_sessions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Continue a completed session' implies usage when a session is already completed, but it gives no explicit when-to-use guidance, prerequisites, or alternatives to sibling tools such as antigravity_run.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
antigravity_runRun Antigravity taskBDestructive
Copy non-ignored project files to a temporary directory and run agy --sandbox there. includePaths narrows copied files or folders. Returns a taskId; source is unchanged.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | ||
| role | No | ||
| model | No | ||
| prompt | Yes | ||
| sessionId | No | ||
| includePaths | No | ||
| timeoutSeconds | No | ||
| isolateWorktree | No | ||
| workingDirectory | Yes | ||
| acceptanceCriteria | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| task | No | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, and openWorldHint=true, so the safety profile is covered. The description still adds real value beyond them by disclosing the sandboxing mechanism (copies into a temp dir, runs agy --sandbox), the includePaths narrowing behavior, and the taskId return token. The 'source is unchanged' claim sits in mild tension with destructiveHint=true but is not a direct contradiction, since the destruction happens inside the sandbox/task state rather than the source tree.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the mechanism (copy to temp dir and run in sandbox), then the includePaths qualifier, then the return/immutability note. No filler and no repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but for a 10-parameter tool with 0% schema description coverage the description covers only one parameter and no workflow positioning. An agent can call it with the two required params but has no basis for choosing mode, role, isolateWorktree, timeoutSeconds, or how to build acceptanceCriteria.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and there are 10 parameters, so the schema provides names and types but no semantics. The description only explains includePaths ('narrows copied files or folders'), leaving mode, role, model, sessionId, timeoutSeconds, isolateWorktree, workingDirectory, and the whole acceptanceCriteria structure undocumented in prose. That is far too thin to compensate for a 0% coverage schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a concrete verb+resource ('Copy non-ignored project files to a temporary directory and run agy --sandbox there') and states the returned handle (taskId). It clearly separates this from read-only siblings like antigravity_preview/antigravity_status, though it never names a specific sibling to disambiguate from antigravity_resume or antigravity_integrate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance: nothing says this starts a new task versus sitting alongside antigravity_resume, antigravity_cancel, or antigravity_verify. The phrase 'Returns a taskId' hints that this is the entry point, but the agent must infer that. No exclusions or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
antigravity_sessionsList known Antigravity sessionsARead-only
List conversation IDs recovered from local persisted tasks. agy does not advertise a session-list command.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| scope | No | |
| sessions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful provenance context (IDs are recovered from locally persisted tasks rather than fetched from a live session API), but says nothing about freshness, ordering, or whether empty results mean no sessions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no filler, with the core behavior front-loaded ahead of the clarifying note about the missing CLI command.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description supplies the important provenance caveat. Coverage is solid for a zero-parameter read tool, with only minor gaps around result ordering and empty-state meaning.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. The description correctly implies no inputs are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (list conversation IDs) and the provenance of the data ('recovered from local persisted tasks'), which an agent can distinguish from most siblings. It does not, however, explicitly differentiate from the closest siblings like antigravity_tasks or antigravity_resume.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent infers it should call this when it needs available session/conversation IDs. The note that 'agy does not advertise a session-list command' explains why the tool exists but does not state when to prefer this over antigravity_tasks, antigravity_resume, or antigravity_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
antigravity_set_modelSelect Antigravity modelA
Persist an exact model ID from agy models as the bridge default. Null persists Auto (agy default), overriding BRIDGE_DEFAULT_MODEL. Does not alter agy global settings.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| model | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, covering the safety profile. The description adds real behavioral context beyond that: the write target (bridge default), the env var it overrides (BRIDGE_DEFAULT_MODEL), the null-to-Auto semantic, and the explicit scope limitation that agy global settings are untouched. Authorization needs and error behavior remain unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the action and followed by the null case and the scope boundary. No filler, every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the description covers the single parameter plus the side-effect boundary. What is missing is validation/error behavior for an invalid model ID and whether the value is verified against the agy model list at call time.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and there is one required parameter, so the description carries the burden. It does so reasonably: the value must be an 'exact model ID from agy models' and null persists Auto rather than being an error. The lack of an enum or concrete ID example keeps it from being a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (persist) and resource (an exact model ID as the bridge default), which cleanly separates it from the sibling readers antigravity_get_model and antigravity_list_models. It stops short of naming an alternative explicitly, but the read/write split is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by describing the null-persists-Auto behavior, so an agent can infer that passing a value selects a model and passing null restores the default. However there is no explicit when-to-use guidance, no statement of prerequisites, and no instruction that the ID must first be obtained from 'agy models'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
antigravity_statusGet Antigravity task statusBRead-only
Return task metadata, status, process ID and isolated copy path when available.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| task | No | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the bar is lower. The description adds useful context on what fields come back and the 'when available' caveat signaling optional/absent fields, which is more than the annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that leads with the verb and enumerates the returned fields. No filler or redundancy, though it is lean enough to leave gaps rather than being fully economical.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be re-explained, and annotations carry the safety profile. The remaining gap is sibling routing: with 22 peers including antigravity_tasks and antigravity_result, the definition does not say when this status call wins.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate for the undocumented taskId parameter. It implies the input is a task but adds no format or constraint detail; the self-explanatory name plus the uuid format in the schema keep this at a baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Return') and resource ('task metadata, status, process ID and isolated copy path'), making the tool's output scope clear. However, it does not differentiate itself from close siblings like antigravity_tasks or antigravity_result, leaving the agent to infer which retrieval surface to use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance and names no alternatives, despite a crowded sibling set (antigravity_tasks, antigravity_result, antigravity_events, antigravity_sessions) where routing matters. Nothing tells the agent whether this is for a single task ID versus a listing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
antigravity_tasksList persisted tasksARead-only
Recover task IDs and metadata from local bridge state, including tasks from earlier server processes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| tasks | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, destructiveHint=false, so the safety profile is covered. The description adds genuine context beyond that: the data comes from local bridge state and survives server process restarts, telling the agent results persist across sessions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tight sentence that front-loads the action (Recover task IDs and metadata) and then the distinguishing scope. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. For a no-param, read-only list tool the description covers purpose and persistence scope adequately; only explicit sibling routing is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero-parameter tool, so there is nothing for the description to disambiguate; baseline 4 applies. No parameter confusion is possible.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (recover task IDs and metadata) and scopes the source (local bridge state, persisting across server processes). Clear enough to distinguish from antigravity_status/antigravity_result, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'tasks from earlier server processes' implies the recovery scenario (after restart/process loss), which is useful implied usage. There is no explicit when-to-use or when-not-to-use versus siblings like antigravity_result or antigravity_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
antigravity_testRun tests in the native agy sandboxADestructive
Start an asynchronous continuation that executes an exact command through agy run_command. Captures actual output, exit status and file fingerprints. Optionally permits up to three repair retries. No Docker or host execution fallback. Use the returned taskId for events, result, review and integration.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | ||
| command | Yes | ||
| retries | No | ||
| expectedSha256 | Yes | ||
| timeoutSeconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| task | No | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructive/openWorld/non-readOnly, and the description adds substantive context beyond them: asynchronous execution, captured exit status and file fingerprints, optional up to three repair retries, and the absence of Docker/host fallback. That said, it doesn't explain what gets mutated or how expectedSha256 gates execution.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with the core action and followed by capability, constraint, and routing information. No filler, though the last sentence is somewhat list-like.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return-value explanation isn't required, and the description covers the async workflow and downstream taskId usage. However, for a destructive tool with 0% schema coverage on a mandatory hash parameter, the description leaves meaningful gaps about how taskId and expectedSha256 are obtained and what timeoutSeconds controls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 5 parameters including a nested command object, so the description must compensate and largely does not. It mentions retry behavior (matching the retries max of 3) but says nothing about taskId, expectedSha256, timeoutSeconds, or the command's executable/args shape.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (start an asynchronous continuation that executes a command) plus what it captures, which separates it from siblings like antigravity_run and antigravity_verify. It never explicitly names a sibling to contrast against, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real routing guidance ('Use the returned taskId for events, result, review and integration') and a negative constraint ('No Docker or host execution fallback'), telling the agent when this path is and isn't appropriate. It does not say when to prefer antigravity_run or antigravity_record_test, so no explicit alternative comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
antigravity_usageRead observed token usageARead-only
Consolidate final CLI usage by retained task, session and requested model. Resumed task counters are session deltas, not repeated cumulative totals. Missing counters stay null. This does not report account quota or billing; disclose partial or unavailable usage to the user.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | ||
| taskId | No | ||
| sessionId | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| scope | No | |
| byTask | No | |
| byModel | No | |
| counters | No | |
| bySession | No | |
| taskCount | No | |
| measuredTaskCount | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: resumed task counters are session deltas rather than cumulative totals, missing counters remain null, and partial/unavailable usage should be surfaced to the user.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with the core action before the caveats. Each sentence carries information, though the phrasing is somewhat telegraphic in the opening clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, and the description covers delta semantics, null handling, and scope boundaries. For a read-only, zero-required-param tool this is largely complete, missing only explicit alternative routing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the schema provides no parameter meaning. The description partially compensates by naming the three filter dimensions (task, session, requested model), which map to taskId, sessionId and model, but gives no format or exclusivity guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (consolidate) and resource (CLI token usage) scoped by task, session and model. It distinguishes itself by clarifying it is not account quota or billing, though it does not name a sibling alternative directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clarifies the boundary ('does not report account quota or billing') which is useful when-not guidance, but it never states when to prefer this over siblings like antigravity_status or antigravity_result. Usage is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
antigravity_verifyVerify task acceptance criteriaB
Check actual artifacts and ground Codex review quotes in file lines. Requires criteria defined before the task. A CLI SUCCESS or unsupported claim is not verification; client review remains client-reported.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | ||
| reviews | No | ||
| expectedSha256 | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| checks | No | |
| review | No | |
| sha256 | No | |
| status | No | |
| checkedAt | No | |
| fileHashes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, openWorldHint=false, and destructiveHint=false, so the agent knows this is a non-destructive but state-changing call. The description adds the meaningful caveat that CLI success is not verification and that client review is client-reported, but it doesn't explain what state is mutated, whether prior verification is replaced, or what permissions are needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact clauses with the core action front-loaded and the caveat trailing. No filler, though the sentence rhythm reads as a list of assertions rather than a structured statement of prerequisites and behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the annotations cover the safety profile. What remains missing for a required-hash, criteria-based verification call is the meaning of expectedSha256 and taskId, so the definition is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across three parameters, so the description carries the full burden. It gestures at the reviews structure ('ground Codex review quotes in file lines', 'criteria defined before the task') but says nothing about taskId or the required expectedSha256 pin, leaving the two required parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (check artifacts, ground review quotes in file lines) against a named resource (task acceptance criteria), so an agent understands this tool validates evidence rather than producing it. It stops short of differentiating explicitly from siblings like antigravity_test or antigravity_record_test, leaving some overlap to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one prerequisite ('Requires criteria defined before the task') and a negative boundary ('A CLI SUCCESS or unsupported claim is not verification'), which is useful context. However, it never says when to call this versus antigravity_test, antigravity_record_test, or antigravity_read_result, so the routing decision is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
23 tool updates
v0.4.0- First observed
antigravity_cancel - First observed
antigravity_cleanup - First observed
antigravity_discard - First observed
antigravity_events - First observed
antigravity_get_model - First observed
antigravity_health - First observed
antigravity_integrate - First observed
antigravity_list_models - First observed
antigravity_list_project_files - First observed
antigravity_preview - First observed
antigravity_read_patch - First observed
antigravity_read_result - First observed
antigravity_record_test - First observed
antigravity_result - First observed
antigravity_resume - First observed
antigravity_run - First observed
antigravity_sessions - First observed
antigravity_set_model - First observed
antigravity_status - First observed
antigravity_tasks - First observed
antigravity_test - First observed
antigravity_usage - First observed
antigravity_verify
TDQS
Scored across 23 tools
Tools generally target distinct lifecycle stages (run/resume/cancel, preview/read_patch/read_result, test/verify/integrate), but several reading/status tools have adjacent purposes. The descriptions help separate result vs read_result and preview vs read_patch, though an agent could still confuse them.
All tools consistently use the antigravity_ prefix with snake_case, which makes the set predictable. Most names are verb_noun or verb_noun-phrase, but some are noun-only query tools (usage, status, tasks, events, result, sessions), a minor deviation from a strict pattern.
23 tools is heavy for a single MCP server and sits in the borderline 16-25 range. The domain is complex, but several output-reading and status tools could be consolidated, making the surface feel somewhat over-scoped.
The surface covers model selection, task lifecycle, file listing, patch/result reading, testing, verification, integration, and cleanup. Minor gaps exist, such as no explicit authentication/login tool or direct source-file read outside task artifacts, but core workflows are covered.
Maintenance
Related MCP Connectors
Connect Claude.ai, ChatGPT and MCP-compatible coding clients to aictrl engineering workflows. Check account readiness, find and run tasks, inspect workflow progress and approvals, review pull-request findings, and query repository context. Uses OAuth and your aictrl organisation's permissions.
- DazbenchOAuthapp.dazbench
Task management your AI agents can actually run. One line becomes a context-ready task over MCP.
Start and manage Reason cloud coding agents, projects and sessions from any MCP client.
Hosted coding agent: start, follow up on and stop tasks that can open GitHub pull requests.
Related MCP Servers
- AlicenseBqualityAmaintenanceAn MCP bridge that lets Codex delegate long-running agent work to the Antigravity CLI, providing observable and resumable tool-based execution with project scoping.14102 PyPI15MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI clients to run Google Antigravity coding sub-agents as MCP tools, with synchronous and asynchronous execution, task polling, and sandboxed Docker workspace isolation.-
- AlicenseAqualityCmaintenanceEnables AI harnesses to delegate code analysis, modification, testing, and long-running tasks to the locally installed Antigravity CLI via stdio MCP, with job status tracking and conversation continuity.3MIT
- AlicenseBqualityBmaintenanceEnables a local Codex chat to ask a second opinion, review staged, unstaged, or revision-based diffs, and delegate coding tasks to the Antigravity CLI running in isolated or disposable workspaces. Supports starting, polling, retrieving, and cancelling tasks with returned answers, diffs, changed-file lists, exit codes, and time/output limits, while never auto-applying returned patches.81MIT