Run an explicitly requested, bounded, non-sensitive coding task through the local free-worker adapter using a verified free OpenCode model. Use only when the user asks to execute a free worker or free agent and accepts the external-model safety boundary.
82%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Use the bundled scripts/run-free-worker adapter to execute one bounded worker task. The frontier agent remains responsible for preparing the contract, reviewing the result, and deciding what to keep.
Do not invoke the adapter unless the user explicitly authorizes free-agent execution. Never include secrets, credentials, personal data, or other sensitive material in the requirement or working tree.
Pass one JSON contract file:
.agents/skills/free-agent-execution/scripts/run-free-worker /absolute/path/to/contract.jsonThe adapter writes one JSON result to standard output. A missing or unreadable contract is a usage error with exit status 2. Contract, model, worker, scope, and validation failures are returned as JSON with status: "failed".
Version reusable task contracts, prompts and selected evidence in the project
that owns the task. Store expanded host-specific contracts, complete streams
and temporary client configuration in that project's ignored
.lab/coordination/<run-id>/. Arnesto owns shared launchers and routing policy;
the coordinating client does not own the project's execution artifacts.
See coordination artifact guidance
for the ownership boundary and an archived provisional launcher reference.
Use this shape:
{
"contract_version": "1",
"mode": "free",
"execution_role": "worker",
"parent_role": "frontier",
"parent_run_id": "run-123",
"delegation_depth": 1,
"task_id": "task-1.1",
"task_class": "bounded_code",
"sensitivity": "non_sensitive",
"working_directory": "/absolute/path/to/git-worktree",
"requirement": "Implement one precise, bounded change.",
"require_changes": true,
"allowed_files": [
"relative/path/to/file"
],
"validation": {
"command": [
"make",
"test"
]
},
"model": "omniroute/oc/deepseek-v4-flash-free",
"timeout_seconds": 30
}The adapter requires these values and types:
contract_version: exactly "1".mode: exactly "free".execution_role: exactly "worker".parent_role: exactly "frontier".sensitivity: exactly "non_sensitive".working_directory: a non-empty absolute path inside a Git worktree. Prefer the worktree root so Git paths match allowed_files.requirement: a non-empty string containing one bounded implementation task.allowed_files: an array of worktree-relative file paths. Use exact Git path spelling.validation.command: a non-empty array of executable and argument strings. It is executed directly, without shell interpolation.model: one of the verified models below.task_class: a configured free-worker task class. Version one provides bounded_code.parent_run_id: a non-empty string identifying the delegating frontier run.require_changes: an optional boolean. Set it to true for edit tasks so a non-empty explanation without an attributed file change fails visibly. Omit it or set it to false when a no-change result is valid.task_id: a non-empty string identifying this task within the delegation tree.delegation_depth: exactly 1 for a worker contract.Every configured task class declares max_steps, max_input_tokens, and
max_timeout_seconds in the routing manifest. These policy ceilings override
contract preferences. Version one's bounded_code values are 3, 50000,
and 180, respectively. The adapter rejects a requested timeout above the
class ceiling.
The shared version-one role envelope distinguishes entry from worker contracts:
mode frontier or free, execution_role entry, a non-empty task_id, delegation_depth 0, and omit parent_role and parent_run_id.mode free, execution_role worker, parent_role frontier, a non-empty parent_run_id, a non-empty task_id, and delegation_depth 1.A context that is already acting as an OpenCode worker must not re-enter as entry. The adapter rejects such contracts before opening another OpenCode invocation.
The checked-in routing manifest at .agents/free-agent-routing.json is the source of truth. Treat the manifest, not this document, as authoritative for which model identifiers the adapter admits: both verified_free_models and free_worker.task_classes.<class>.models.
Version one (2026-07-26) verified two omniroute/oc/* identifiers for bounded_code:
omniroute/oc/deepseek-v4-flash-freeomniroute/oc/big-pickleSix omniroute/opencode-zen/* identifiers were reconciled with the live OmniRoute catalog and tested on 2026-07-30. All returned an OpenCode status-1 failure with no usable completion, so they are quarantined and absent from the manifest. Use only the two original oc/* models unless a future conformance run promotes another model.
OmniRoute advertised free-deterministic on 2026-08-06, but its minimal
semantic probe failed with payment_required at pipeline step 3,
longcat/LongCat-2.0. The inactive combo and the obsolete free-stack combo
were removed from the local store on 2026-08-21. They are retired and are not
admitted to the manifest.
Do not substitute aliases or newly advertised free models without updating the routing manifest and re-running validate-routing-manifest. The adapter still validates that the requested model is both globally verified and admitted for the requested task class.
The manifest is non-secret and declares the frontier owner, verified free models, allowed task classes, and frontier-only privacy categories. Validate it after every policy change:
.agents/skills/free-agent-execution/scripts/validate-routing-manifest .agents/free-agent-routing.jsonThe validator rejects missing or non-positive class limits, missing task policies, non-OmniRoute free-worker models, defaults absent from the verified pool, class models absent from that pool, and common secret-like credential values.
A completed adapter run returns:
{
"status": "succeeded",
"model": "omniroute/oc/deepseek-v4-flash-free",
"termination_reason": "completed",
"summary": "Implemented the bounded task.",
"changed_files": [
"relative/path/to/file"
],
"validation": {
"command": [
"make",
"test"
],
"status": "passed"
},
"usage": {
"input_tokens": 10,
"output_tokens": 20
}
}status is "succeeded" only when OpenCode exits successfully, returns usable final text, satisfies any require_changes postcondition, changes no newly dirty paths outside allowed_files, stays within policy, and the validation command passes. termination_reason is stable for programmatic handling; examples include completed, context_budget_exceeded, timeout, required_changes_missing, scope_violation, and validation_failed. The preferred final format is FREE_AGENT_RESULT because it gives a concise structured summary; ordinary non-empty final text is retained as the summary when the worker does not follow that format. Failed runs include a diagnostic when the adapter reaches normal result assembly.
changed_files contains paths that are dirty after the worker but were not dirty immediately before it ran. Pre-existing tracked and untracked changes are intentionally excluded.
task) and shell (bash) denied. The frontier agent performs validation after the worker returns.read and edit enabled, and a policy-owned step cap. Do not broaden this
tool surface without measuring the input-token impact and reviewing the
safety boundary. Three 2026-07-30 bounded smokes used 20,082–20,509 input
tokens versus a 90,297-token pre-minimization baseline.step_finish
events and stops a worker after the class budget is exceeded. Usage becomes
visible only after a provider call finishes, so this cannot prevent the
first oversized request; it prevents the repeated 80k-150k-token loop that
motivated the guard.allowed_files is a post-execution check, not a write sandbox. An out-of-scope change fails the result but is not reverted.changed_files, the Git diff, the diagnostic, and validation evidence before accepting the worker's changes.saski/arnesto
752f690
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.