From e0beaa987be0112bf210d41dfeabe7219f94b0e1 Mon Sep 17 00:00:00 2001 From: Ryan Pei Date: Wed, 1 Jul 2026 03:22:26 +0000 Subject: [PATCH] docs: Add Cloud Run Sandbox Code Executor to integrations catalog --- docs/integrations/assets/cloud-run.png | Bin 0 -> 16393 bytes .../cloud-run-sandbox-code-executor.md | 84 ++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 docs/integrations/assets/cloud-run.png create mode 100644 docs/integrations/cloud-run-sandbox-code-executor.md diff --git a/docs/integrations/assets/cloud-run.png b/docs/integrations/assets/cloud-run.png new file mode 100644 index 0000000000000000000000000000000000000000..bb94c0d560a374bb6af16a343b2ffefe545e0998 GIT binary patch literal 16393 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�kmdKwkA1cZH_1M~|}(g764Y;i(w_ie0}IyW`X z1_WkjEIo3M-d(}T2KhJ;tK#;A!^J88kKYP`Xe71l`$_jGbx*p-s)y=s$O3)VA zOcin4fxuNHf_u!+;^^Iey+6R&rm@HN&U5X&og_+B{KdvA4e;A_2;N?atMgJ=(ERXS z*bB#0Ft1P3HoPxIoA_T{4Y1+@fdjpfZc3(G;kGH+O}_7L?w`~tz^_T40r$f9Z{O~Y zOzp}wabs5nww`?c6QM*4cKN<8RSGOc;p+8sq^ts_0d{JNtAQ)4=OryO0mRUzLDEQ- z6R_BZ;i-LJK5$dRWe``mfV8X*iRUeDM}_iL8&?GcZY+^V01L^#rzD|A>0|mr(VL#= zZz)hzpNM5Fm@B)B?OmoX=wPKpm`OtG;PHwA;tB>#_2Q<+=jbd~X2hBca~DfPpl)%4 z2P$B*GR@mtgXCTTFEjtMXc4?!L+Ro|nfx~UP6VXTnf`m@mbyVIku1{Be4he9-m--# zf4Iq{q}t_9fp;}%_=%lhPYCAHmpn**0Ay;8S0qCUE_Qtncy9tg2FzO@g#{@AspQGv z6@aEt5S2`QaKG&Uo&S|-M<>MBz3p_&+NiT&8 zS7tZ}nc2wW%@Y|WqP7JS0~QzR+?HluUp*W}R1=|U1a?9^~q)+9AudlTkSyGs%%xeT+O18oU_pJ0dB@@xG; zzPHjYct{%rcvjb7ETT=+d7JbVD8@^6Tb1-pM;?LATK??YV3Yuyg^=^y{C?SJkWioK zK4zrqH(Qxm`@N)nsGP9Y{)jcFS(1p9=4m?)6*k(HGy$(+95K^pO=6|VK3>^5@l@4F z=b2^_xY%eQflt(|fA+b!z^~tN!H^kMM5`Bqor{B)t63MCIcDg`R-^sN9n#W&yo;gbJlIr9uLAB={EC(3Q_W)JPu1e<~}=i@qp0E4CR_J$pC zDO(x3DZnzbrp43Ito*oUT{7^?jD>Sy(VJ_Dz+M{MQ_>H>CU5MBx{Dx7=hT=p8jnW? z_-NPUjlNS|KQ;Ft?VGVBmdl(FSCtl%(iiUdFYZYG4j3Y>7$PQtxH-duRMa` z;3C8t#|DVZ<~ElNX)hifczIK2|8>r*jTXY8W;+wS=`u}khi>z3JVTy;a0-JlBTt+Y z0S`FTWT~rf>pAP!>asf}*Es8cjTHSXJB~go*#EmiI86~n;e#zcIHL)7z}RrC^iSq( zENvAVskOD`$}%6-HA`B)fD&EcipAPTxoeAIuSH6QH59;sJO@9!d-xm6yz+)cj zc{p8%c@5`gQM(g!F!(|aL^Ox!yI2Icf!@c4XS@LE<*y>is((*dt3fBnCoai|DTpJI zw2dH;bG4P;rT=?O36cspl~pX42_azf1iz`^gfCzbS_;KdX80uNT|x@+$) z@YLupcs2kZeXscM-7)Pb0L$@VhKRr5-prL3cYOQ@t^~kIWH;6Sz+W)I%M_}B^)bIt z1}T8DyPM>HWM-aqt{lJk9~l&2%0xH*|HvE6(d7iCe-B{y0y(M0#|r(&x+%y;rS80; z|9dix2c;OEH8%S{atD)quZzz8cV!C#AkXno3x@q;y@407ZY9&HDZ*R~1UCk(r_#ox z{{uePVb7LrAWk>M~;FTen_zgjc^aZI^f$hyz@Y;(xp)#lmn7x?4LTz9+!GHO6rTpWJ z9YzCnAD{)pA*pLXIhu=>NfcG#~OnEO`8Lz^?G~j#P$<(A~S!B%ZH8%|J_Q3 z8{p%CH%bA2hl2W!I{iy2 + Supported in ADKPython v1.23.0 + + +The Cloud Run Sandbox Code Executor (`CloudRunSandboxCodeExecutor`) provides a secure method for executing LLM-generated code by leveraging Google Cloud Run's nested sandboxing capabilities. + +This executor is designed to run from **within** a Cloud Run container (such as a Cloud Run Service) where the sandbox launcher is enabled. It executes untrusted code locally inside an isolated guest sandbox using the container's own Python interpreter, preventing the code from accessing the parent container's environment or credentials. + +## How it works + +When a request to execute code is made, the `CloudRunSandboxCodeExecutor` performs the following steps: + +1. Writes the code to the standard input (`stdin`) of the guest sandbox execution command. +2. Spawns the guest sandbox binary using `sandbox do `. +3. The guest sandbox executes the code using the parent container's Python interpreter (resolved via `sys.executable`) mounted inside a read-only root filesystem. +4. Captures the standard output and standard error from the execution. +5. Suppresses harmless network namespace cleanup warnings from `stderr` to ensure only actual runtime errors are returned. + +## System requirements + +To successfully use the Cloud Run Sandbox Code Executor: + +- Your ADK project must be deployed to a **Google Cloud Run Service**. +- The Cloud Run resource must be created with the **Sandbox Launcher** enabled. You can do this by deploying with the `--sandbox-launcher` flag: + ```bash + gcloud beta run deploy my-agent-service \ + --image=gcr.io/my-project/my-agent-image \ + --sandbox-launcher + ``` +- The container image must include a Python 3 installation (e.g. `python:3.11-slim`), which will be used to run the guest code. +- No special Python extra packages are required (it uses standard library subprocess execution). + +## Configuration parameters + +The `CloudRunSandboxCodeExecutor` can be configured with the following parameters: + +| Parameter | Type | Description | +| ------------------- | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| `sandbox_bin` | `str` | Path to the local guest sandbox binary in the container. Defaults to `"/usr/local/gcp/bin/sandbox"`. | +| `allow_egress` | `bool` | Whether to allow outbound network connections (egress) from the sandbox. Defaults to `False`. | +| `timeout_seconds` | `int \| None` | Timeout in seconds for the code execution. Defaults to `None` (no timeout). | + +> [!NOTE] +> Unlike other executors, `CloudRunSandboxCodeExecutor` does not support `stateful=True` or `optimize_data_file=True`. Every code block runs in a fresh ephemeral sandbox instance within the container. + +## Usage Example + +```python +from google.adk.agents import LlmAgent +from google.adk.integrations.cloud_run import CloudRunSandboxCodeExecutor +from google.adk.code_executors import CodeExecutionInput +from google.adk.agents.invocation_context import InvocationContext + +# Initialize the executor with egress allowed and a 60-second timeout +cloud_run_executor = CloudRunSandboxCodeExecutor( + allow_egress=True, + timeout_seconds=60, +) + +# Example direct execution: +ctx = InvocationContext() +result = cloud_run_executor.execute_code( + ctx, + CodeExecutionInput(code="import urllib.request; print(urllib.request.urlopen('https://example.com').read()[:100])") +) +print(result.stdout) + +# Example registering with an Agent: +agent = LlmAgent( + name="sandbox_coding_agent", + model="gemini-flash-latest", + instruction="You are a helpful AI assistant that solves math problems by writing and executing Python code.", + code_executor=cloud_run_executor, +) +```