OpenSpace sandbox-fallback-python
Fallback to run_shell with embedded Python when execute_code_sandbox fails due to e2b unavailability
install
source · Clone the upstream repo
git clone https://github.com/HKUDS/OpenSpace
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/HKUDS/OpenSpace "$T" && mkdir -p ~/.claude/skills && cp -r "$T/gdpval_bench/skills/sandbox-fallback-python" ~/.claude/skills/hkuds-openspace-sandbox-fallback-python && rm -rf "$T"
manifest:
gdpval_bench/skills/sandbox-fallback-python/SKILL.mdsource content
Sandbox Fallback: Python via run_shell
When to Use This Skill
Apply this skill when
execute_code_sandbox fails with errors indicating:
- e2b service unavailability
- Sandbox timeout or connection issues
- Code execution environment not accessible
This fallback allows you to execute Python code directly via shell, bypassing the sandbox infrastructure.
Fallback Procedure
Step 1: Detect Sandbox Failure
Identify fallback necessity from error messages like:
- "e2b unavailable"
- "sandbox connection failed"
- "execution environment error"
- Timeout errors during code execution
Step 2: Switch to run_shell with Embedded Python
Instead of
execute_code_sandbox, use run_shell with a Python heredoc or inline script:
python3 << 'EOF' # Your Python code here print("Hello from fallback execution") EOF
Step 3: Install Dependencies First
If your Python code requires packages not guaranteed to be installed:
pip install package_name package_name2 && python3 << 'EOF' # Your Python code here import package_name print("Code with dependencies executed") EOF
Step 4: Handle File I/O
For scripts that need to read/write files:
- Use absolute or explicit relative paths
- Files persist in the workspace directory
- List directory contents with
to verify file operationsls
python3 << 'EOF' import os # Write output to file with open("output.txt", "w") as f: f.write("Results here") # Verify print(f"Working directory: {os.getcwd()}") EOF
Code Examples
Simple Calculation
python3 << 'EOF' result = sum(range(100)) print(f"Sum: {result}") EOF
With Package Installation
pip install requests -q && python3 << 'EOF' import requests response = requests.get("https://api.example.com/data") print(response.json()) EOF
With JSON Processing
python3 << 'EOF' import json data = {"key": "value", "count": 42} output = json.dumps(data, indent=2) print(output) # Save to file with open("data.json", "w") as f: f.write(output) EOF
Best Practices
- Use heredoc syntax -
prevents variable expansion issues<< 'EOF' - Install quietly - Use
to reduce output noisepip install -q - Error handling - Add try/except blocks in Python code for robustness
- Verify execution - Check stdout/stderr from run_shell to confirm success
- Keep code compact - Long scripts are harder to debug in shell context
Caveats
- No persistent state between run_shell calls (unlike execute_code_sandbox)
- Longer execution time for complex scripts due to Python interpreter startup
- Limited debugging - Cannot easily inspect variables between statements
- Output size limits - Very large outputs may be truncated
When NOT to Use This Fallback
- If the task specifically requires sandbox isolation for security
- If you need persistent state across multiple code executions
- If the code execution is extremely long-running (consider backgrounding)