Execute código não confiável com segurança: um agente de IA em um sandbox descartável
O agente escreve e executa um script, tenta acessar a internet e relata que a chamada falha dentro de uma microVM que desaparece depois.
- Shell
- Limite de orçamento
Veja uma execução real
Uma execução real em 7 de out. de 2026, reproduzida. Modelo: openai/gpt-6-luna.
- Na filaorçamento de $0.04 reservado
- MicroVMmicroVM ready
- MicroVMworker started · shell on · web off
- Shell
$ pwd; whoami - Shell
$ command -v curl && curl -sS -m 8 https://example.com - Shell
$ printf '%s\n' '#!/usr/bin/env python3' 'primes = []' 'n = 2' 'while len(primes) < 15:' ' if all(… - Shell
$ printf 'sandbox proof\n' > /tmp/proof.txt && ls -l /tmp/proof.txt - MicroVMmicroVM destroyed
- Concluída3 chamadas ao modelo, 5,214 tokensSaída gravada (em inglês)
- Prime script output:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 whoami:worker;pwd:/tmp/ephemeral-run-s2TPIy/scratch- curl error:
curl: (6) Could not resolve host: example.com /tmp/proof.txtcreated;ls -l:-rw-r--r-- 1 worker worker 14 Oct 7 15:02 /tmp/proof.txt
The network call did not succeed.
- Prime script output:
- Worker destruído$0.00353 cobrados, $0.03647 liberados
Execute você mesmo
Abra o exemplo no playground com a requisição inteira preenchida. Ele roda na sua própria conta, dentro do orçamento indicado, contra os mesmos sistemas de exemplo somente leitura.
Orçamento deste exemplo: $0.04
Como funciona
O acesso à web está desativado e o shell está ativado, então o agente pode executar código, mas não consegue enviar nada para fora. O prompt pede que ele tente uma chamada de rede e relate a falha exata, o que deixa o isolamento visível na linha do tempo. Nada do que ele escreve sobrevive à execução.
O que o agente pode e não pode fazer
As permissões fazem parte da requisição. Tudo o que não está listado aqui não está disponível para a execução.
| Configuração | Permitido |
|---|---|
| Conexões | Nenhuma |
| Web | Desativado |
| Shell | Ativado, dentro da máquina isolada |
| Arquivos | Nenhuma |
| Retenção zero de dados | Desativada: o registro é mantido por 30 dias |
| Orçamento | $0.04, um limite rígido |
| Tempo limite | 120 segundos |
As credenciais nunca entram na máquina: um broker as adiciona a cada chamada e aplica os métodos acima.
O código
Esta é a requisição exata que o exemplo envia. Defina EPHEMERAL_API_KEY com uma chave de membro da sua organização.
curl -X POST $EPHEMERAL_URL/v1/runs \
-H "Authorization: Bearer $EPHEMERAL_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d @request.jsonCorpo completo da requisição request.json
O mesmo corpo, com os arquivos inline.
{
"prompt": "This is a sandbox test. Do these steps with the shell and report the real output, never what you expect. 1) Write a small script that prints the first 15 prime numbers, run it and show the output. 2) Run `whoami` and `pwd`. 3) Try to reach the internet with `curl -sS -m 8 https://example.com` (and, if curl is missing, python3 with urllib) and report the exact error. 4) Write a file named /tmp/proof.txt and list it. Reply in Markdown, at most 120 words: one line per step with the result, then one sentence saying whether the network call succeeded.",
"web": false,
"shell": true,
"timeout_seconds": 120,
"max_cost_micros": 40000
}