Run untrusted code safely with fine-grained permissions, multiple isolation backends, and comprehensive audit logging.
Fine-grained control over file, network, and process access with glob patterns, port restrictions, and command filtering.
Choose between process-based isolation for speed or container-based isolation for maximum security.
Track all sandbox operations with filtering, export capabilities, and real-time callbacks for monitoring.
Automatically detect and block dangerous code patterns like subprocess calls, network access, and dynamic imports.
Configure timeout, memory limits, and output size constraints to prevent resource exhaustion.
Execute Python, JavaScript (Node.js), Ruby, and shell scripts in the same sandbox environment.
from agent_sandbox import Sandbox, create_sandbox # Create sandbox with default settings sandbox = Sandbox() # Execute code safely result = sandbox.execute('print("Hello!")') print(result.stdout) # Hello! # Use helper for common configs sandbox = create_sandbox( timeout=60.0, allow_file_read=True, allowed_paths=["/tmp/*"], )
from agent_sandbox.permissions import ( PermissionSet, FilePermission, NetworkPermission, PermissionLevel, ) permissions = PermissionSet() # File permissions with patterns permissions.add(FilePermission( level=PermissionLevel.READ, allowed_paths=["/data/*"], denied_paths=["/data/secrets/*"], )) # Network with host control permissions.add(NetworkPermission( allow_outbound=True, allowed_hosts=["api.openai.com"], ))
from agent_sandbox import Sandbox sandbox = Sandbox() # Validate without executing result = sandbox.validate(''' import subprocess subprocess.run(["rm", "-rf", "/"]) ''') if not result["valid"]: for issue in result["issues"]: print(f"Blocked: {issue['pattern']}") print(f"Reason: {issue['reason']}")
from agent_sandbox.audit import AuditLog def on_denied(entry): if not entry.allowed: print(f"DENIED: {entry.action}") audit = AuditLog(on_entry=on_denied) # Get summary statistics summary = audit.get_summary() print(f"Total: {summary['total_entries']}") print(f"Denied: {summary['denied']}") # Export for analysis audit.export_to_file("audit.jsonl")
All permissions denied by default
Dangerous patterns blocked pre-execution
Glob patterns for file access control
Host and port-level restrictions
Prevent resource exhaustion attacks
Every operation logged for review
| Class | Description |
|---|---|
| Sandbox | Main sandbox interface for executing code |
| SandboxConfig | Configuration dataclass for sandbox settings |
| SandboxResult | Execution result with status, output, and metadata |
| PermissionSet | Collection of permissions for enforcement |
| FilePermission | File system access control with glob patterns |
| NetworkPermission | Network access control with host/port filtering |
| ProcessPermission | Process spawning control with command filtering |
| ProcessIsolation | Subprocess-based isolation backend |
| ContainerIsolation | Docker-based isolation for maximum security |
| CodeExecutor | Low-level executor with permission checking |
| AuditLog | Thread-safe audit logging with filtering |