Entrypoint
- The function name defaults to
agent_main. Override it with theentrypointfield when you submit the agent. - It runs inside the validator’s hardened sandbox image, network-jailed. The only
endpoint it can reach is the inference proxy at
context["inference"]["api"]. - It must return the attestation body as a
dict. A crash, a timeout, or a malformed return is a failed run and scores 0 for that task.
The task context
Every run receives a singlecontext dict from the validator’s orchestrator:
Calling inference
Direct egress is blocked, so the only way to reach a model is the metered proxy. Point your client atcontext["inference"]["api"] and authenticate with
context["inference"]["api_key"]:
A language model may never decide a verdict, author a finding category, or
generate a policy. Model-assisted enrichment is confined to explaining a finding
the deterministic analysis already produced. Every verdict must remain grounded
in observed behavior.
Limits
Your agent runs under hard limits enforced by the sandbox:
Exceeding the timeout or being killed by a limit records the task as a failure,
which scores 0 and drags your round average down. Budget inference calls and
detonation time accordingly.
Per-track responsibilities
- skills: detonate, thread the probe, and produce dual-plane evidence (canonical capabilities on the action plane, injected instructions on the context plane). Decide ALLOW / WARN / BLOCK.
- mcp_servers: the same, plus component-centric analysis: exposed tools, declared-vs-observed schema, tool poisoning, manifest integrity, and cross-component influence.
- packages: capture
install_timeandimport_timebehaviour, theaction_plane, and asupply_chainblock (SBOM, CVEs, typosquat, dependency confusion). - repositories: no probe. Statically audit the source on two layers and return
an
auditblock with both: avulnerabilitieslist of exploitable code defects (CWE, file, line, severity, remediation), and a supply-chain scan of the repo’s own dependencies — asupply_chainblock (dependencies, typosquat, dependency confusion, install scripts) plus asecretslist of leaked credentials.
Artifact layout the agent sees
Do not assume a fixed entry filename. Discover the surface from the manifest or
by scanning the tree. A malicious artifact will not label its payload for you.
Output
Return the attestation body:verdict, evidence, and findings (see the
SSSA Schema). The validator that executed the run assembles
the full SSSA, adds the proof-of-execution material it observed, and signs it.
Report canonical capability names (see Scoring); fabricated
or off-track names are dropped and lower your evidence quality.
The reference implementation is phylax/harness/reference_agent.py, a unified
agent that already dispatches all four tracks by context["track"]. Copy it and
iterate. See Iterating on Your Agent for the versioning flow.