gVisor-isolated Kubernetes sandbox with an HTTP API, SDK and MCP bridge
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio counts 0 tools · 0 res
· 0 prompts
permission surface via code analysis
No tools enumerated yet for this server.
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit beb163f · analyzer v33 · 1w ago
danger signals7
- dynamic code execution eval()/exec() hullwork-sandbox-beb163f/tests/test_audit_throttle.py :30
exec(compile(ast.fix_missing_locations(ast.Module(body=body, type_ignores=[])), "core.py", "exec"), namespace) - dynamic code execution eval()/exec() hullwork-sandbox-beb163f/tests/test_monitoring.py :57
exec(compile(ast.fix_missing_locations(module), "core.py", "exec"), namespace) - dynamic code execution eval()/exec() hullwork-sandbox-beb163f/tests/test_reaper_behavior.py :726
exec( - dynamic code execution eval()/exec() hullwork-sandbox-beb163f/tests/test_response_schemas.py :103
exec(compile(ast.fix_missing_locations(module), "core.py", "exec"), namespace) - dynamic code execution eval()/exec() hullwork-sandbox-beb163f/tests/test_runtime_reuse.py :136
exec(compile(ast.fix_missing_locations(ast.Module(body=body, type_ignores=[])), "core.py", "exec"), namespace) - dynamic code execution eval()/exec() hullwork-sandbox-beb163f/tests/test_store_backend_startup.py :61
exec(compile(ast.fix_missing_locations(module), "core.py", "exec"), namespace) - dynamic code execution eval()/exec() hullwork-sandbox-beb163f/tests/test_workspace_lifecycle.py :43
exec(compile(ast.fix_missing_locations(ast.Module(body=body, type_ignores=[])), "core.py", "exec"), namespace)
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 176
filesystem 100
- fs hullwork-sandbox-beb163f/bench/runner.py :16
import pathlib - fs hullwork-sandbox-beb163f/control_plane/core.py :13
import pathlib - fs hullwork-sandbox-beb163f/control_plane/grafana_proxy.py :41
import pathlib - fs hullwork-sandbox-beb163f/control_plane/kube.py :53
with open(token_path, encoding="utf-8") as handle: - fs hullwork-sandbox-beb163f/control_plane/oidc.py :177
with _OPENER.open(request, timeout=10) as response: - fs hullwork-sandbox-beb163f/control_plane/store.py :24
from pathlib import Path - fs hullwork-sandbox-beb163f/control_plane/volume.py :14
from pathlib import Path, PurePosixPath - fs hullwork-sandbox-beb163f/file-service/file_service.py :19
import shutil - fs hullwork-sandbox-beb163f/file-service/gc_workspaces.py :9
import shutil - fs hullwork-sandbox-beb163f/runtime/runtime_server.py :19
from pathlib import Path - fs hullwork-sandbox-beb163f/runtime/shell_sessions.py :23
from pathlib import Path - fs hullwork-sandbox-beb163f/sandbox_platform/control_plane_transport.py :57
return _OPENER.open(request, timeout=timeout)
show 28 more
- fs (weak) hullwork-sandbox-beb163f/scripts/claim-workspaces.py :41
import pathlib - fs (weak) hullwork-sandbox-beb163f/scripts/generate-license-inventory.py :9
import pathlib - fs (weak) hullwork-sandbox-beb163f/scripts/migrate-local-containerd-provision.py :12
from pathlib import Path - fs (weak) hullwork-sandbox-beb163f/scripts/mutation-experiment.py :44
import pathlib - fs (weak) hullwork-sandbox-beb163f/scripts/prepare_release_assets.py :8
import pathlib - fs (weak) hullwork-sandbox-beb163f/scripts/smoke-local.py :8
import pathlib - fs (weak) hullwork-sandbox-beb163f/tests/contract_helpers.py :6
import pathlib - fs (weak) hullwork-sandbox-beb163f/tests/control_plane_probe.py :19
import pathlib - fs (weak) hullwork-sandbox-beb163f/tests/test_acting_subject.py :20
import pathlib - fs (weak) hullwork-sandbox-beb163f/tests/test_acting_subject_binding.py :22
import pathlib - fs (weak) hullwork-sandbox-beb163f/tests/test_acting_subject_vectors.py :26
import pathlib - fs (weak) hullwork-sandbox-beb163f/tests/test_annotation_keys.py :13
import pathlib - fs (weak) hullwork-sandbox-beb163f/tests/test_api_authorization.py :21
import pathlib - fs (weak) hullwork-sandbox-beb163f/tests/test_audit_throttle.py :13
import pathlib - fs (weak) hullwork-sandbox-beb163f/tests/test_auth_contract_doc.py :17
import pathlib - fs (weak) hullwork-sandbox-beb163f/tests/test_benchmark_runner.py :4
import pathlib - fs (weak) hullwork-sandbox-beb163f/tests/test_capability_epochs.py :10
import pathlib - fs (weak) hullwork-sandbox-beb163f/tests/test_capability_tickets.py :12
import pathlib - fs (weak) hullwork-sandbox-beb163f/tests/test_checkpoint_restore.py :14
import pathlib - fs (weak) hullwork-sandbox-beb163f/tests/test_comment_shape.py :17
import pathlib - fs (weak) hullwork-sandbox-beb163f/tests/test_configuration_reference.py :18
import pathlib - fs (weak) hullwork-sandbox-beb163f/tests/test_console_runtime_config.py :3
import pathlib - fs (weak) hullwork-sandbox-beb163f/tests/test_containerd_provision.py :7
from pathlib import Path - fs (weak) hullwork-sandbox-beb163f/tests/test_control_plane_image.py :18
import pathlib - fs (weak) hullwork-sandbox-beb163f/tests/test_credential_boundaries.py :25
import pathlib - fs (weak) hullwork-sandbox-beb163f/tests/test_dev_scripts.py :7
import pathlib - fs (weak) hullwork-sandbox-beb163f/tests/test_documentation.py :3
import pathlib - fs (weak) hullwork-sandbox-beb163f/tests/test_documentation_links.py :22
import pathlib
60 more not shown — this panel samples each group; the count above is the real total.
shell / exec 45
- shell hullwork-sandbox-beb163f/bench/runner.py :18
import subprocess - shell hullwork-sandbox-beb163f/control_plane/core.py :19
import subprocess - shell hullwork-sandbox-beb163f/runtime/runtime_server.py :15
import subprocess - shell hullwork-sandbox-beb163f/runtime/shell_sessions.py :17
import subprocess - shell (weak) hullwork-sandbox-beb163f/scripts/migrate-local-containerd-provision.py :13
import subprocess - shell (weak) hullwork-sandbox-beb163f/scripts/mutation-experiment.py :45
import subprocess - shell (weak) hullwork-sandbox-beb163f/scripts/smoke-local.py :9
import subprocess - shell (weak) hullwork-sandbox-beb163f/scripts/test-adversarial.py :13
import subprocess - shell (weak) hullwork-sandbox-beb163f/tests/contract_helpers.py :9
import subprocess - shell (weak) hullwork-sandbox-beb163f/tests/control_plane_probe.py :20
import subprocess - shell (weak) hullwork-sandbox-beb163f/tests/test_acting_subject.py :21
import subprocess - shell (weak) hullwork-sandbox-beb163f/tests/test_api_authorization.py :22
import subprocess
show 28 more
- shell (weak) hullwork-sandbox-beb163f/tests/test_comment_shape.py :19
import subprocess - shell (weak) hullwork-sandbox-beb163f/tests/test_containerd_provision.py :8
import subprocess - shell (weak) hullwork-sandbox-beb163f/tests/test_dev_scripts.py :11
import subprocess - shell (weak) hullwork-sandbox-beb163f/tests/test_documentation_links.py :24
import subprocess - shell (weak) hullwork-sandbox-beb163f/tests/test_e2e_environment.py :5
import subprocess - shell (weak) hullwork-sandbox-beb163f/tests/test_grafana_embed.py :21
import subprocess - shell (weak) hullwork-sandbox-beb163f/tests/test_helm_package.py :7
import subprocess - shell (weak) hullwork-sandbox-beb163f/tests/test_label_domain.py :15
import subprocess - shell (weak) hullwork-sandbox-beb163f/tests/test_login_paths.py :18
import subprocess - shell (weak) hullwork-sandbox-beb163f/tests/test_management_tenant.py :19
import subprocess - shell (weak) hullwork-sandbox-beb163f/tests/test_markdown_tables.py :20
import subprocess - shell (weak) hullwork-sandbox-beb163f/tests/test_mcp_bridge_robustness.py :19
import subprocess - shell (weak) hullwork-sandbox-beb163f/tests/test_network_policy_inventory.py :17
import subprocess - shell (weak) hullwork-sandbox-beb163f/tests/test_object_owner_derivation.py :31
import subprocess - shell (weak) hullwork-sandbox-beb163f/tests/test_object_store_failure_classification.py :23
import subprocess - shell (weak) hullwork-sandbox-beb163f/tests/test_object_store_layer.py :16
import subprocess - shell (weak) hullwork-sandbox-beb163f/tests/test_object_upload_gate.py :24
import subprocess - shell (weak) hullwork-sandbox-beb163f/tests/test_observability_artifacts.py :19
import subprocess - shell (weak) hullwork-sandbox-beb163f/tests/test_openapi_contract.py :7
import subprocess - shell (weak) hullwork-sandbox-beb163f/tests/test_optional_request_body.py :20
import subprocess - shell (weak) hullwork-sandbox-beb163f/tests/test_project_naming.py :27
import subprocess - shell (weak) hullwork-sandbox-beb163f/tests/test_readiness.py :17
import subprocess - shell (weak) hullwork-sandbox-beb163f/tests/test_release_assets.py :10
import subprocess - shell (weak) hullwork-sandbox-beb163f/tests/test_reserved_management_tenant.py :28
import subprocess - shell (weak) hullwork-sandbox-beb163f/tests/test_runtime_driver_startup.py :10
import subprocess - shell (weak) hullwork-sandbox-beb163f/tests/test_safe_stdout.py :29
import subprocess - shell (weak) hullwork-sandbox-beb163f/tests/test_shell_sessions.py :43
import subprocess - shell (weak) hullwork-sandbox-beb163f/tests/test_static_workload_security.py :14
import subprocess
5 more not shown — this panel samples each group; the count above is the real total.
network 34
- net hullwork-sandbox-beb163f/bench/runner.py :21
import urllib.error - net hullwork-sandbox-beb163f/control_plane/api.py :18
from urllib.error import HTTPError, URLError - net hullwork-sandbox-beb163f/control_plane/core.py :18
import socket - net hullwork-sandbox-beb163f/control_plane/grafana_proxy.py :44
import urllib.error - net hullwork-sandbox-beb163f/control_plane/kube.py :9
from urllib.error import HTTPError, URLError - net hullwork-sandbox-beb163f/control_plane/manifests.py :57
Start a Python interpreter and import urllib; under gVisor + `cpu: 500m` limit, - net hullwork-sandbox-beb163f/control_plane/oidc.py :25
import urllib.error - net hullwork-sandbox-beb163f/control_plane/tracing.py :30
from urllib import request - net hullwork-sandbox-beb163f/control_plane/volume.py :20
from urllib.parse import parse_qs, urlparse - net hullwork-sandbox-beb163f/file-service/file_service.py :27
from urllib.parse import parse_qs, urlparse - net hullwork-sandbox-beb163f/runtime/runtime_server.py :14
import socket - net hullwork-sandbox-beb163f/sandbox_platform/control_plane_transport.py :6
import urllib.error
show 22 more
- net hullwork-sandbox-beb163f/sandbox_platform/sandbox_client.py :18
import socket - net hullwork-sandbox-beb163f/sandbox_platform/sandboxctl.py :34
import urllib.parse - net (weak) hullwork-sandbox-beb163f/scripts/smoke-local.py :13
import urllib.request - net (weak) hullwork-sandbox-beb163f/scripts/test-adversarial.py :15
import urllib.error - net (weak) hullwork-sandbox-beb163f/tests/control_plane_probe.py :30
import socket - net (weak) hullwork-sandbox-beb163f/tests/test_acting_subject.py :47
import urllib.error - net (weak) hullwork-sandbox-beb163f/tests/test_api_authorization.py :39
import urllib.error - net (weak) hullwork-sandbox-beb163f/tests/test_file_service_hardening.py :16
import socket - net (weak) hullwork-sandbox-beb163f/tests/test_grafana_embed.py :36
import urllib.error - net (weak) hullwork-sandbox-beb163f/tests/test_homepage.py :8
from urllib.parse import urlparse - net (weak) hullwork-sandbox-beb163f/tests/test_login_paths.py :31
import urllib.error - net (weak) hullwork-sandbox-beb163f/tests/test_object_owner_derivation.py :68
import urllib.error - net (weak) hullwork-sandbox-beb163f/tests/test_object_store_failure_classification.py :234
import urllib.error - net (weak) hullwork-sandbox-beb163f/tests/test_object_store_layer.py :119
srv = socket.socket(); srv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - net (weak) hullwork-sandbox-beb163f/tests/test_object_upload_gate.py :113
import socket - net (weak) hullwork-sandbox-beb163f/tests/test_observability_artifacts.py :246
import urllib.error - net (weak) hullwork-sandbox-beb163f/tests/test_openapi_contract.py :90
import urllib.error - net (weak) hullwork-sandbox-beb163f/tests/test_readiness.py :28
import urllib.error - net (weak) hullwork-sandbox-beb163f/tests/test_reserved_management_tenant.py :42
import urllib.error - net (weak) hullwork-sandbox-beb163f/tests/test_runtime_mcp_errors.py :27
import socket - net (weak) hullwork-sandbox-beb163f/tests/test_tracing.py :294
import urllib.error - net (weak) hullwork-sandbox-beb163f/tests/test_workspace_lifecycle.py :87
import urllib.error
secrets 9
- secrets hullwork-sandbox-beb163f/bench/runner.py :384
parser.add_argument("--token", default=os.getenv("SANDBOX_TOKEN")) - secrets hullwork-sandbox-beb163f/control_plane/core.py :215
VOLUME_AGENT_TOKEN = os.getenv("VOLUME_AGENT_TOKEN", "") - secrets hullwork-sandbox-beb163f/file-service/file_service.py :47
os.getenv("WORKSPACE_CAPABILITY_KEY") - secrets hullwork-sandbox-beb163f/runtime/runtime_server.py :46
CAPABILITY_KEY = os.environ["SANDBOX_CAPABILITY_KEY"] - secrets hullwork-sandbox-beb163f/sandbox_platform/sandbox_client.py :192
and os.getenv("SANDBOX_TOKEN", "").strip() - secrets hullwork-sandbox-beb163f/sandbox_platform/sandboxctl.py :44
token = os.getenv("SANDBOX_TOKEN") - secrets (weak) hullwork-sandbox-beb163f/scripts/claim-workspaces.py :81
token = os.getenv("SANDBOX_TOKEN") - secrets (weak) hullwork-sandbox-beb163f/scripts/smoke-local.py :24
existing = os.environ.get("SANDBOX_TOKEN", "").strip() - secrets (weak) hullwork-sandbox-beb163f/tests/test_grafana_embed.py :115
admin = os.environ["SANDBOX_CONTROL_PLANE_TOKEN"]
database 4
- db hullwork-sandbox-beb163f/control_plane/store.py :471
import sqlite3 - db (weak) hullwork-sandbox-beb163f/tests/test_store_behavior.py :19
import sqlite3 - db (weak) hullwork-sandbox-beb163f/tests/test_store_migrations.py :23
import sqlite3 - db (weak) hullwork-sandbox-beb163f/tests/test_workspace_lifecycle.py :84
import sqlite3
declared dependencies 2
- PyYAML@>=6.0,<7
- boto3@>=1.36,<2