Exécuter du code non fiable en toute sécurité : un agent IA dans un bac à sable jetable

L'agent écrit et exécute un script, tente d'accéder à internet et signale que l'appel échoue, dans une microVM qui disparaît ensuite.

  • Shell
  • Plafond de budget

Regardez une vraie exécution

Une vraie exécution du 7 oct. 2026, rejouée. Modèle : openai/gpt-6-luna.

Réussierun_de9af30ebaaa50ab76819bb536239c61$0.00353 sur $0.04
  1. En file d'attentebudget de $0.04 réservé
  2. MicroVMmicroVM ready
  3. MicroVMworker started · shell on · web off
  4. Shell$ pwd; whoami
  5. Shell$ command -v curl && curl -sS -m 8 https://example.com
  6. Shell$ printf '%s\n' '#!/usr/bin/env python3' 'primes = []' 'n = 2' 'while len(primes) < 15:' ' if all(…
  7. Shell$ printf 'sandbox proof\n' > /tmp/proof.txt && ls -l /tmp/proof.txt
  8. MicroVMmicroVM destroyed
  9. Réussie3 appels au modèle, 5,214 jetonsSortie enregistrée (en anglais)
    1. Prime script output: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
    2. whoami: worker; pwd: /tmp/ephemeral-run-s2TPIy/scratch
    3. curl error: curl: (6) Could not resolve host: example.com
    4. /tmp/proof.txt created; ls -l: -rw-r--r-- 1 worker worker 14 Oct 7 15:02 /tmp/proof.txt

    The network call did not succeed.

  10. Worker détruit$0.00353 facturé, $0.03647 libéré
Modèle $0.00033 · Web $0.00 · Calcul $0.0032

Lancez-le vous-même

Ouvrez l'exemple dans le playground avec toute la requête déjà remplie. Il s'exécute sur votre propre compte, dans le budget indiqué, sur les mêmes systèmes d'exemple en lecture seule.

Budget pour cet exemple : $0.04

Fonctionnement

L'accès web est désactivé et le shell activé : l'agent peut donc exécuter du code mais ne peut rien envoyer à l'extérieur. Le prompt lui demande de tenter un appel réseau et de signaler l'échec exact, ce qui rend l'isolation visible dans la chronologie. Rien de ce qu'il écrit ne survit à l'exécution.

Ce que l'agent peut et ne peut pas faire

Les permissions font partie de la requête. Tout ce qui n'est pas listé ici n'est pas disponible pour l'exécution.

ParamètreAutorisé
ConnexionsAucune
WebDésactivé
ShellActivé, à l'intérieur de la machine isolée
FichiersAucune
Rétention zéro des donnéesDésactivée : l'historique est conservé 30 jours
Budget$0.04, un plafond strict
Délai120 secondes

Les identifiants n'entrent jamais dans la machine : un broker les ajoute à chaque appel et impose les méthodes ci-dessus.

Le code

Voici la requête exacte envoyée par l'exemple. Définissez EPHEMERAL_API_KEY avec une clé de membre de votre organisation.

curl -X POST $EPHEMERAL_URL/v1/runs \
  -H "Authorization: Bearer $EPHEMERAL_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d @request.json
Corps complet de la requête request.json

Le même corps, avec les fichiers en ligne.

request.json
{
  "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
}

En savoir plus

Exemples liés

esc

Aucun résultat pour « ».