Agents de código, os programas de inteligência artificial que executam tarefas de programação, precisam de chaves de acesso para consultar serviços na internet. A prática comum, porém, é colocar essas chaves onde não deveriam estar: coladas em prompts, guardadas em arquivos de configuração, expostas a cada tarefa.
Midwing (abre em nova aba), publicado no GitHub em 6 de outubro, propõe outra divisão de trabalho. O agent pede os dados, mas a chave de acesso nunca chega até ele. A chave fica fora.
Como a ferramenta funciona
O Midwing é um pequeno aplicativo de desktop acompanhado de uma CLI, sigla em inglês para interface de linha de comando, o modo de uso em que o operador digita comandos em vez de clicar em botões. O fluxo tem três passos, descritos na página do projeto:

- No aplicativo, a pessoa conecta a conta de um serviço. Serviço, aqui, é qualquer site que oferece uma API, a interface pela qual um programa conversa com o serviço e troca dados.
- Ela escolhe quais endereços daquele serviço o agent está autorizado a consultar.
- O agent passa a pedir os dados pela CLI, com comandos como
midwing get my-service /items.
A chave de acesso, chamada de token, fica guardada no keychain do sistema operacional, o cofre de credenciais que o macOS e outros sistemas mantêm para senhas e chaves. O Midwing aceita serviços próprios com autenticação por token ou por e-mail e senha. No caso de e-mail e senha, o serviço precisa ter um endereço de login que responda em JSON, formato de texto estruturado usado para trocar dados. A senha é usada uma vez; só o token devolvido pelo serviço é guardado.
Uma escolha de projeto faz diferença no dia a dia: o aplicativo de desktop serve só para configurar as conexões. Depois de configurar, a pessoa pode fechá-lo, e a CLI continua funcionando sozinha.
O que o agent enxerga
Na configuração, o Midwing gera para o agent um bloco de instruções, um prompt, que não contém credencial nenhuma. O que o agent recebe é, na prática, uma lista do que pode fazer: nome do serviço, o endereço base na internet em HTTPS, os caminhos de leitura permitidos e os parâmetros de busca aceitos.
As respostas da CLI vêm em JSON, uma página por chamada. Ou seja, o agent não recebe acesso livre ao serviço, e sim uma porta controlada, com permissões definidas antes de qualquer tarefa.
Apenas leitura, por enquanto
A limitação principal é explícita na documentação: o Midwing aceita somente endpoints GET. GET é o tipo de requisição da web que apenas lê dados, sem alterar nada no serviço. Não há, nesta versão, como o agent criar, editar ou apagar informações por meio da ferramenta.
Há outros limites de segurança. Os pedidos vão sempre para endereços fixos em HTTPS, o padrão criptografado da web. Redirecionamentos, técnica em que o servidor manda o pedido para outro endereço, estão desativados. Cada chamada expira em 30 segundos. As respostas precisam ser JSON e não podem passar de 8 MiB, unidade de tamanho de arquivo; para autenticação, o teto cai para 1 MiB. A ferramenta roda localmente, sem serviço em segundo plano nem servidor na nuvem de terceiros.
Avisos de instalação
A versão atual é para macOS, nos dois tipos de processador da linha atual da Apple, Apple Silicon e Intel. O download sai da página de lançamentos (abre em nova aba) como um arquivo ZIP universal, acompanhado de um roteiro de instalação que instala o aplicativo e a CLI juntos.
Há um porém de segurança que a própria página explica. O aplicativo é assinado de forma improvisada, sem o certificado de desenvolvedor da Apple nem o processo de verificação da empresa chamado notarização. A consequência prática é que o macOS pode impedir a primeira abertura.
No Linux, a ferramenta depende de um cofre de segredos do tipo Secret Service estar desbloqueado para funcionar.
Projeto recém-nascido
O repositório, sob licença MIT, uma das licenças mais permissivas de código aberto, tinha três alterações registradas e nenhuma estrela na data da publicação da versão v0.1.1. O código é construído com Go, Node.js e o framework Wails, o que sugere um desenvolvimento individual em estágio inicial.
Mesmo pequeno, o projeto já inclui controle de versão no próprio aplicativo: ao abrir, ele verifica no GitHub se existe uma versão mais recente e repete a checagem no máximo uma vez por dia enquanto permanece aberto. A verificação consulta apenas informações públicas de lançamento, sem enviar credenciais.

