Ligar um agente de IA ao 4Keyless
Crie a chave do agente, confie no certificado do 4Keyless e mande as chamadas pelo proxy; a credencial é injetada no caminho, sem passar pelo agente.
Um agente de IA (ou qualquer automação) usa o 4Keyless por um proxy HTTP. O agente se autentica no proxy com a chave do agente; o proxy confere a liberação, injeta a credencial real do sistema (senha, API key, token OAuth, certificado, código 2FA), encaminha a requisição e grava o registro de acesso. O agente nunca vê o segredo.
Se o seu agente fala MCP (Claude, Cursor e afins) e as ferramentas expostas bastam para a tarefa, prefira o MCP Gateway: não há certificado para confiar nem proxy para configurar.
Endereços
| Para que | Endereço |
|---|---|
| Proxy HTTP(S), o caminho dos dados | http://proxy.4keyless.io:8080 (HTTPS passa por CONNECT na mesma porta) |
| Agent API: o que este agente alcança | https://agent.4keyless.io |
| MCP Gateway | https://mcp.4keyless.io/mcp |
| Certificado do 4Keyless (PEM) | https://api.4keyless.io/api/v1/certificate/download |
1. Criar o agente e a chave
- No painel, abra Agentes e clique em Novo agente.
- Escolha o tipo Bot, dê um nome e escolha o grupo do agente, no campo Grupo. É pelo grupo que as liberações chegam a ele.
- Salve. A janela Chaves do agente mostra a chave, no formato
4k_bot_.... Ela aparece uma única vez: copie agora.

- Garanta que o grupo do agente tenha uma liberação para os acessos que ele vai usar. Veja Liberar um acesso e Políticas.
A chave de bot não expira. Rotacionar chave, na linha do agente, emite outra e invalida a anterior na hora. Desativar o agente corta a chave imediatamente.
A chave é um segredo. Entregue-a ao agente numa variável de ambiente (convenção: FKL_AGENT_KEY) e nunca a escreva em código, log, histórico do shell ou na conversa com o modelo. Todos os exemplos abaixo leem $FKL_AGENT_KEY.
2. Instalar a skill (agentes de IA)
A skill ensina o agente a usar o 4Keyless: variáveis de proxy, certificado, descoberta, escolha do titular, sinais de bloqueio e o que fazer em cada um. Ela está em https://4keyless.io/SKILL.md, com o script de navegador em https://4keyless.io/skill-scripts/browse.js.
No Claude Code, por exemplo:
mkdir -p ~/.claude/skills/4keyless/scripts
curl -fsSL https://4keyless.io/SKILL.md -o ~/.claude/skills/4keyless/SKILL.md
curl -fsSL https://4keyless.io/skill-scripts/browse.js -o ~/.claude/skills/4keyless/scripts/browse.js
Skills com o procedimento de um acesso específico (ids reais, titulares, domínios) são exportadas no painel, em MCP Gateway, aba Skills, botão Baixar como SKILL.md.
3. Confiar no certificado do 4Keyless
O proxy abre o HTTPS para injetar a credencial, então o cliente HTTP do agente precisa confiar no certificado do 4Keyless. Baixe o arquivo fora do proxy (antes de exportar as variáveis de proxy, ou com api.4keyless.io em NO_PROXY):
curl -fsSL https://api.4keyless.io/api/v1/certificate/download -o ~/4keyless-ca.crt
Prefira confiar por processo, sem permissão de administrador:
| Runtime | Configuração |
|---|---|
| Node.js | NODE_EXTRA_CA_CERTS=~/4keyless-ca.crt |
| Python (requests, httpx) | REQUESTS_CA_BUNDLE=~/4keyless-ca.crt ou SSL_CERT_FILE=~/4keyless-ca.crt |
| curl | --cacert ~/4keyless-ca.crt |
| Navegador headless | confiar no sistema (scripts abaixo) |
Para configurar uma máquina Linux inteira de uma vez, com FKL_AGENT_KEY já exportada:
curl -fsSL https://4keyless.io/install.sh | bash
O script baixa o certificado e o instala no sistema (pede sudo), grava ~/.config/4keyless/env.sh com as variáveis de proxy e de certificado, carrega esse arquivo no .bashrc, .zshrc e .profile, configura curl, wget e git e testa a conexão. Opções: --cert-only (só o certificado), --system-wide (também /etc/environment e apt) e --uninstall. No macOS, curl -fsSL https://4keyless.io/install-macos-ca.sh | bash instala o certificado no chaveiro. Em computadores de pessoas, o 4Keyless Desktop e o artigo Instalar o certificado de segurança cobrem o mesmo passo.
4. Mandar as chamadas pelo proxy
O proxy aceita a chave de dois jeitos:
Proxy-Authorization: 4Keyless <chave do agente>
Proxy-Authorization: Basic base64("agent:<chave do agente>")
No formato Basic o usuário é ignorado e a senha é a chave, o que permite usar a URL de proxy padrão de qualquer cliente HTTP:
export HTTPS_PROXY="http://agent:${FKL_AGENT_KEY}@proxy.4keyless.io:8080"
export HTTP_PROXY="$HTTPS_PROXY"
export NO_PROXY="agent.4keyless.io,api.4keyless.io,mcp.4keyless.io"
NO_PROXY tira do caminho os endereços do próprio 4Keyless, que não precisam de injeção.
Depois, chame o sistema de destino direto, pelo endereço dele. Há dois estilos, conforme a configuração do acesso:
- Sem credencial: não mande cabeçalho de autenticação. O proxy coloca o certo no caminho (num sistema OAuth, um
Authorization: Bearersempre renovado). O que você mandar emAuthorizationé sobrescrito. - Sentinela: onde iria o segredo, mande o texto-sentinela definido no acesso. O proxy o troca pelo valor real.
Na dúvida, comece sem credencial: um 401 do sistema de destino na primeira tentativa indica que o acesso espera a sentinela.
curl
curl --cacert ~/4keyless-ca.crt \
--proxy "http://agent:${FKL_AGENT_KEY}@proxy.4keyless.io:8080" \
https://api.exemplo.com.br/v1/clientes
Python
import os
import requests
proxy = f"http://agent:{os.environ['FKL_AGENT_KEY']}@proxy.4keyless.io:8080"
resp = requests.get(
"https://api.exemplo.com.br/v1/clientes",
proxies={"http": proxy, "https": proxy},
verify=os.path.expanduser("~/4keyless-ca.crt"),
timeout=120,
)
print(resp.status_code, resp.headers.get("X-4Keyless-Blocked"))
Node.js
Com o undici (npm i undici), rodando com NODE_EXTRA_CA_CERTS=~/4keyless-ca.crt:
import { fetch, ProxyAgent } from 'undici';
const dispatcher = new ProxyAgent({
uri: 'http://proxy.4keyless.io:8080',
token: `4Keyless ${process.env.FKL_AGENT_KEY}`,
});
const resp = await fetch('https://api.exemplo.com.br/v1/clientes', { dispatcher });
console.log(resp.status, resp.headers.get('x-4keyless-blocked'));
Use timeout de pelo menos 120 segundos. Numa liberação com aprovação, a requisição fica parada até alguém aprovar no painel; um timeout curto aborta do seu lado uma chamada que seria aprovada.
5. Descobrir o que o agente alcança
A Agent API responde, em JSON, só o que a liberação do agente permite. Use Bearer:
curl -H "Authorization: Bearer $FKL_AGENT_KEY" https://agent.4keyless.io/api/systems
Rota (GET) | O que devolve |
|---|---|
/api/me | o agente: nome, grupo e validade da credencial (vazia para chave de bot) |
/api/systems | os acessos liberados, com tipo, domínios e titulares disponíveis em cada um |
/api/credential-groups | os titulares liberados, só nome e descrição |
/api/exit-proxies | os locais da conexão disponíveis |
Qualquer URL cujo host case com os domains de um acesso recebe a credencial quando passa pelo proxy. O type indica a ferramenta: rest_api e graphql são chamadas HTTP comuns; web_app pede um navegador de verdade (veja abaixo).
Escolher o titular e o local da conexão
Sem escolha, o proxy usa o titular padrão da liberação. Para agir em nome de outro titular, peça uma capacidade de acesso uma vez e mande o valor em toda requisição ao domínio:
curl -X POST https://agent.4keyless.io/api/access-codes \
-H "Authorization: Bearer $FKL_AGENT_KEY" \
-H 'Content-Type: application/json' \
-d '{"systems":[{"system_id":"<id do acesso>","group_id":"<id do titular>"}]}'
A resposta traz codes, com um value por domínio. Envie-o no cabeçalho X-4Keyless-Access. O titular fica fixo na capacidade e é lido no servidor: nada que você mande depois o troca. Para escolher o local da conexão por requisição, mande X-4Keyless-Exit-Proxy: <id> com um id de /api/exit-proxies. Os dois cabeçalhos são removidos antes de a requisição seguir.
Sistemas web (web_app)
Sistemas do tipo web_app precisam de navegador: o 4Keyless executa a automação de login dentro da página, e baixar o HTML com curl devolve só o formulário. Use Playwright com o proxy no contexto do navegador (proxy: { server, username: 'agent', password: process.env.FKL_AGENT_KEY }) e um user agent de Chrome comum: portais públicos costumam recusar o HeadlessChrome com 403 antes de a requisição chegar ao 4Keyless. O browse.js da skill já faz isso:
npm i playwright && npx playwright install chromium
node ~/.claude/skills/4keyless/scripts/browse.js https://sistema.exemplo.com.br/login --shot tela.png
Se algo der errado
| Sinal | O que significa |
|---|---|
407 Proxy Authentication Required | Chave ausente, inválida ou de agente desativado. |
403 com X-4Keyless-Blocked: true | A liberação bloqueou. Não tente contornar; avise quem administra. |
429 com X-4Keyless-Limited: true | A cota mensal de transferência do plano acabou. |
502 com X-4Keyless-Egress-Error | O local da conexão falhou. |
| Erro de certificado | O cliente não confia no certificado do 4Keyless, ou o host está em NO_PROXY. |
A lista completa, com os limites por plano, está em Erros e limites.
Artigos relacionados
- Conectar Claude, Cursor e outros clientes ao MCP GatewayAponte o cliente de IA para https://mcp.4keyless.io/mcp e entre por OAuth ou com a chave do agente; liberações, injeção de credencial e auditoria valem como no proxy.
- API de integração: automatizar a conta pelo seu backendCrie um usuário de integração, emita a key e use a referência completa da API, que fica no painel em /api-docs.
- Erros e limites para quem integraO que cada resposta de erro do proxy, da Agent API, do MCP Gateway e da API de integração significa, e os limites de cada plano.
- Agentes, grupos e chavesCadastre as pessoas e os agentes de IA que usam os acessos, organize-os em grupos e gerencie as chaves dos agentes de IA.
- Políticas, quem pode usar qual acessoLigue grupos de agentes a acessos e titulares, e escolha se o uso é permitido, bloqueado ou depende de aprovação.
- Liberar um acesso para a equipeCrie uma autorização que diz qual equipe entra em quais sistemas, em nome de quais titulares, e em que dias e horários.