feat: add Upstash Box sandbox provider#3617
Conversation
Adds an Upstash Box-backed sandbox extension with docs, examples, optional dependency wiring, and coverage for lifecycle, workspace, exec, and resume behavior. Co-authored-by: Cursor <cursoragent@cursor.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e8e23fb9a7
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ba10862013
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| excludes = self._tar_exclude_args() | ||
| tar_cmd = ["tar", *excludes, "-C", root.as_posix(), "-cf", tar_path, "."] |
There was a problem hiding this comment.
Avoid shell-quoted tar excludes in argv mode
When a manifest or register_persist_workspace_skip_path() skip path contains spaces or shell metacharacters, shell_tar_exclude_args() returns patterns quoted for a shell command, but this provider passes those strings directly as argv entries to tar. The literal quotes become part of the exclude pattern, so those paths are not excluded and ephemeral/mounted workspace content can be captured in persisted snapshots; build unquoted --exclude= args for the argv form or run the command through a shell like the other providers.
Useful? React with 👍 / 👎.
Summary
Test plan
uv run pytest tests/extensions/sandbox/test_upstash_box.py tests/sandbox/test_client_options.py tests/sandbox/test_compatibility_guards.py -quv run ruff check src/agents/extensions/sandbox/upstash_box tests/extensions/sandbox/test_upstash_box.py examples/sandbox/extensions/upstash_box_runner.py