apache / apache/airflow

Track a future SandboxOperator for sandboxed command/job execution

Open
#69,862 0 comments 0 reactions 2 assignees Claimed by @zozo123 View on GitHub
area:core-operators kind:feature
Dominant language
Python
Stars
46.9k
Forks
17.8k
Avg merge
2d 9h
Merged PRs (30d)
472

Description

## Scope

This issue tracks a **future `SandboxOperator`** (and a `@task.sandbox` decorator) — an Airflow *task* that runs one author-defined command or job in an isolated, ephemeral sandbox. It complements the sandboxed-execution surfaces already in flight and is opened to keep the roadmap explicit and the boundaries clear; **no implementation is proposed here yet.**

## Where it sits

These are separate execution boundaries, not one API and not a monotonic security ranking:

| Surface | What runs in the sandbox | Tracked by |
|---|---|---|
| Restricted code orchestration | Monty-compatible glue code | #68407 (merged) |
| Sandboxed code execution as a tool | model-generated full Python; the agent stays outside | #68847 |
| **Sandboxed command/job execution** | **one author-defined command or job** | **this issue** |
| Sandboxed TaskInstance execution | the complete Task SDK `ExecuteTask` workload | #68845 |

## What a `SandboxOperator` would add over the toolset (#68847)

The toolset gives an *agent* a `run_python_in_sandbox` tool inside a single task. A `SandboxOperator` would instead *be* the task and own a real task lifecycle:

- author-declared command / image / inputs;
- file and artifact upload and download;
- cancellation and, ideally, deferrable/resumable execution that frees the worker slot while the sandbox runs;
- streamed and reconnectable logs.

It would reuse the same sandbox code-execution adapters where practical, but its contract is a task lifecycle, not a code-execution adapter — and it is explicitly **not** an executor (that whole-task surface is tracked separately in #68845).

## Status

Future work; no implementation planned yet. Opened so the roadmap is fully issue-backed and the scope boundaries between the tool, operator, and executor layers stay explicit.

---
Drafted-by: Claude Code (Opus 4.8) (no human review before posting)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.