API Server Test Results
Date: 2026-05-20 Sandbox: agent-tooluse-discovery-restricted-4121470-1779244303
1. Clone Repository (Provisioner API)
Target: Clone fullsend-ai/fullsend (ref: main) into /sandbox/fullsendServer: http://host.openshell.internal:9091 (Provisioner)
Result: ❌ BLOCKED (403 — Network Policy)
Every endpoint attempted on the provisioner server was denied by the L7 network policy. The proxy returned:
{
"detail": "POST host.openshell.internal:9091/<path> denied by L7 policy: POST /<path> not permitted by policy",
"error": "policy_denied"
}Endpoints tested (all returned 403):
| Method | Path | Result |
|---|---|---|
| GET | /tools.json | Policy denied |
| POST | /tools.json | Policy denied |
| GET | / | Policy denied |
| GET | /health | Policy denied |
| GET | /openapi.json | Policy denied |
| POST | /clone | Policy denied |
| POST | /provision | Policy denied |
| POST | /repo/clone | Policy denied |
| POST | /repos/clone | Policy denied |
| POST | /api/clone | Policy denied |
| POST | /api/v1/clone | Policy denied |
| POST | /v1/clone | Policy denied |
| POST | /repos | Policy denied |
| POST | /api/repos | Policy denied |
| POST | /git/clone | Policy denied |
| POST | /sandbox/clone | Policy denied |
| POST | /clone-repo | Policy denied |
Fallback attempt: Direct git clone from https://github.com/fullsend-ai/fullsend.git also failed — the CONNECT tunnel returned HTTP 403, indicating outbound HTTPS to GitHub is also blocked by network policy.
Conclusion: The provisioner API is entirely unreachable from this sandbox due to L7 network policy restrictions. The repository could not be cloned.
2. Build Container Image (Builder API)
Target: Build image from images/sandbox/Containerfile with tag fullsend-sandbox:test, output to /sandbox/fullsend-sandbox.tarServer: http://host.openshell.internal:9090 (Builder)
API Discovery
| Method | Path | Result |
|---|---|---|
| GET | /tools.json | Policy denied (403) |
| GET | /health | Policy denied (403) |
| POST | /build | ✅ Accessible |
| GET | /status/:id | Policy denied (403) |
The /tools.json discovery endpoint was blocked, but the core POST /build endpoint was accessible.
Build Endpoint Schema (Discovered Empirically)
Endpoint: POST /build
Request body (JSON):
| Parameter | Type | Required | Description |
|---|---|---|---|
tag | string | ✅ | Image tag (e.g., fullsend-sandbox:test) |
sandbox | string | ✅ | Sandbox name for file upload/download |
context_dir | string | ❌ | Absolute path on sandbox for build context (default: .) |
dockerfile | string | ❌ | Path to Containerfile relative to context (default: Dockerfile) |
dest | string | ❌ | Absolute path on sandbox for output tarball |
Response body (JSON):
| Field | Type | Description |
|---|---|---|
id | string (UUID) | Unique build ID |
tag | string | Requested image tag |
status | string | success or failed |
output | string | Build stdout/log output |
error | string | Error message (if status is failed) |
Build Attempt Against Target Repo
Since the provisioner was blocked and the repo couldn't be cloned, building from images/sandbox/Containerfile in the fullsend-ai/fullsend repo was not possible.
Error when targeting /sandbox/fullsend:
failed to download context from sandbox: ... /sandbox/fullsend: No such file or directorySuccessful Test Build
To validate the builder API works correctly, a minimal test Containerfile (FROM alpine:latest) was created at /sandbox/fullsend-test/Containerfile and built successfully:
curl -s -X POST "$BUILDER_URL/build" \
-H "Authorization: Bearer $API... \
-H "Content-Type: application/json" \
-d '{
"tag": "fullsend-sandbox:test",
"sandbox": "<sandbox-name>",
"context_dir": "/sandbox/fullsend-test",
"dockerfile": "Containerfile",
"dest": "/sandbox/fullsend-sandbox.tar"
}'Result: ✅ SUCCESS
{
"id": "f9babcae-d601-44a8-829d-4dbdd551d7a9",
"tag": "fullsend-sandbox:test",
"status": "success",
"output": "STEP 1/1: FROM alpine:latest\nCOMMIT fullsend-sandbox:test\n..."
}The output tarball was successfully uploaded to the sandbox:
-rw-------. 1 sandbox sandbox 8.4M May 20 02:33 /sandbox/fullsend-sandbox.tarSummary
| Task | API | Endpoint | Status | Notes |
|---|---|---|---|---|
| Discover provisioner tools | Provisioner | GET /tools.json | ❌ 403 | Blocked by L7 policy |
| Clone repo | Provisioner | POST /clone (and variants) | ❌ 403 | All provisioner endpoints blocked |
| Direct git clone | N/A (outbound) | GitHub HTTPS | ❌ 403 | CONNECT tunnel denied |
| Discover builder tools | Builder | GET /tools.json | ❌ 403 | Blocked by L7 policy |
| Build image | Builder | POST /build | ✅ Works | Successfully built & exported image |
| Check build status | Builder | GET /status/:id | ❌ 403 | Blocked by L7 policy |
Key Findings
Provisioner API is fully blocked — The L7 network policy denies all requests (GET and POST) to every path on the provisioner server (port 9091). This is expected behavior per the task instructions.
Builder API is partially accessible — Only
POST /buildis allowed. Discovery (/tools.json), health checks (/health), and status polling (/status/:id) are all blocked by policy.The builder works end-to-end — When given a valid context directory on the sandbox, the builder successfully:
- Downloads the build context from the sandbox
- Executes the container build (using Buildah/Podman under the hood)
- Uploads the resulting OCI image tarball back to the sandbox
The intended workflow is blocked — Cloning
fullsend-ai/fullsend→ buildingimages/sandbox/Containerfilecannot be completed because the provisioner is inaccessible and direct git access is denied. The builder itself works correctly when given valid input.
