NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Go modules · #633 by repository stars
Last release today
01 Oct 2026
Ships on a steady schedule
a new release about every 9 days
Nearly every release is documented
notes for 57 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
11 months old
923 releases · first in 2025
One column per month.
security(deps): bump pytest to >=9.0.3 (CVE-2025-71176) by @AbirAbbas in https://github.com/Agent-Field/agentfield/pull/488
⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
# Staging binary (use --staging flag)
curl -fsSL https://agentfield.ai/install.sh | bash -s -- --staging
# Python SDK (prerelease - requires --pre flag)
pip install --pre agentfield
# TypeScript SDK
npm install @agentfield/sdk@next
VERSION=v0.1.141-rc.4 curl -fsSL https://agentfield.ai/install.sh | bash
Download the binary for your platform below, make it executable, and move it to your PATH.
agentfield-darwin-amd64agentfield-darwin-arm64agentfield-linux-amd64agentfield-linux-arm64af call rejecting valid input for optional reasoner params by @AbirAbbas in https://github.com/Agent-Field/agentfield/pull/610_current_status issue where status stuck on `S… by @DebanKsahu in https://github.com/Agent-Field/agentfield/pull/673af install by @AbirAbbas in https://github.com/Agent-Field/agentfield/pull/738Note truncated.
Closes the Go SDK half of #685. Python (harness/_doctor.py) and TypeScript (harness/availability.ts) both ship harness_doctor with a ProviderHealth report; Go had nothing, even though the issue notes Go is subprocess-only so doctor and errors matter most there.
Two deliberate divergences from Python/TS, documented in the spec table: claude-code is a binary spec here because the Go provider shells out to the claude CLI rather than importing a language wrapper, and cursor is Go-only today (binary 'agent').
Doctor takes injectable LookPath and VersionProbe hooks so tests never depend on which CLIs happen to be installed; the suite is fully platform-independent. Coverage on the new files: most functions 100%, Doctor 94.9%.
Scoped to the library API. The 'af harness doctor' CLI subcommand lives in the control-plane module and is left as follow-up. (cbc9e37)
security(deps): bump pytest to >=9.0.3 (CVE-2025-71176) by @AbirAbbas in https://github.com/Agent-Field/agentfield/pull/488
⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
# Staging binary (use --staging flag)
curl -fsSL https://agentfield.ai/install.sh | bash -s -- --staging
# Python SDK (prerelease - requires --pre flag)
pip install --pre agentfield
# TypeScript SDK
npm install @agentfield/sdk@next
VERSION=v0.1.141-rc.3 curl -fsSL https://agentfield.ai/install.sh | bash
Download the binary for your platform below, make it executable, and move it to your PATH.
agentfield-darwin-amd64agentfield-darwin-arm64agentfield-linux-amd64agentfield-linux-arm64af call rejecting valid input for optional reasoner params by @AbirAbbas in https://github.com/Agent-Field/agentfield/pull/610_current_status issue where status stuck on `S… by @DebanKsahu in https://github.com/Agent-Field/agentfield/pull/673af install by @AbirAbbas in https://github.com/Agent-Field/agentfield/pull/738Note truncated.
HarnessRunner.run() allocated the per-run .agentfield-out-* directory
before dispatching the provider even when schema is None. That directory
only ever holds .agentfield_output.json (#684, #891), and every consumer
of it is already inside an if schema is not None guard, so a text-only
run paid a filesystem write it never read back. When the project root
could not accept one — a read-only mount, an immutable CI workspace — a
plain permission_mode="plan" call failed during setup, before the coding
agent was invoked at all.
Allocate the directory only for schema-bearing runs. Their per-run isolation and cleanup are unchanged, so concurrent runs sharing one cwd still cannot overwrite or delete each other's output.
Refs #684, #891 (8805c96)
security(deps): bump pytest to >=9.0.3 (CVE-2025-71176) by @AbirAbbas in https://github.com/Agent-Field/agentfield/pull/488
⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
# Staging binary (use --staging flag)
curl -fsSL https://agentfield.ai/install.sh | bash -s -- --staging
# Python SDK (prerelease - requires --pre flag)
pip install --pre agentfield
# TypeScript SDK
npm install @agentfield/sdk@next
VERSION=v0.1.141-rc.2 curl -fsSL https://agentfield.ai/install.sh | bash
Download the binary for your platform below, make it executable, and move it to your PATH.
agentfield-darwin-amd64agentfield-darwin-arm64agentfield-linux-amd64agentfield-linux-arm64af call rejecting valid input for optional reasoner params by @AbirAbbas in https://github.com/Agent-Field/agentfield/pull/610_current_status issue where status stuck on `S… by @DebanKsahu in https://github.com/Agent-Field/agentfield/pull/673af install by @AbirAbbas in https://github.com/Agent-Field/agentfield/pull/738Note truncated.
feat(sdk/typescript): add harness provider preflight
fix(sdk/typescript): probe harness doctor versions via the resolved binary
harnessDoctor passed the bare provider name to the version probe while findExecutable had already resolved a PATHEXT-qualified path. On Windows the bare name misses npm shims (ENOENT) and spawning a resolved .cmd/.bat without a shell is rejected by Node (EINVAL, CVE-2024-27980), so shim-based providers like codex always reported version_probe_failed and usable=false.
Probe the resolved absolute path instead, and route Windows batch shims through cmd.exe /d /s /c with the outer-quote form so paths with spaces survive. POSIX behavior is unchanged: the same file that findExecutable verified is executed directly. The VersionProbe contract now documents that command[0] is the resolved path.
harnessDoctor resolved binaries against process.env even when callers supplied HarnessDoctorOptions.env, so a report could mix installation state from the process environment with authentication state from the custom one. Binary discovery (PATH lookup and Windows PATHEXT matching) now uses the same env as the offline auth signal.
Addresses PR #1069 review feedback. (5b0bf9b)
security(deps): bump pytest to >=9.0.3 (CVE-2025-71176) by @AbirAbbas in https://github.com/Agent-Field/agentfield/pull/488
⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
# Staging binary (use --staging flag)
curl -fsSL https://agentfield.ai/install.sh | bash -s -- --staging
# Python SDK (prerelease - requires --pre flag)
pip install --pre agentfield
# TypeScript SDK
npm install @agentfield/sdk@next
VERSION=v0.1.141-rc.1 curl -fsSL https://agentfield.ai/install.sh | bash
Download the binary for your platform below, make it executable, and move it to your PATH.
agentfield-darwin-amd64agentfield-darwin-arm64agentfield-linux-amd64agentfield-linux-arm64af call rejecting valid input for optional reasoner params by @AbirAbbas in https://github.com/Agent-Field/agentfield/pull/610_current_status issue where status stuck on `S… by @DebanKsahu in https://github.com/Agent-Field/agentfield/pull/673af install by @AbirAbbas in https://github.com/Agent-Field/agentfield/pull/738Note truncated.
`bash curl -fsSL https://agentfield.ai/install.sh | bash `
curl -fsSL https://agentfield.ai/install.sh | bash
VERSION=v0.1.140 curl -fsSL https://agentfield.ai/install.sh | bash
Download the binary for your platform below, make it executable, and move it to your PATH.
agentfield-darwin-amd64agentfield-darwin-arm64agentfield-linux-amd64agentfield-linux-arm64Full Changelog: https://github.com/Agent-Field/agentfield/compare/v0.1.139...v0.1.140
security(deps): bump pytest to >=9.0.3 (CVE-2025-71176) by @AbirAbbas in https://github.com/Agent-Field/agentfield/pull/488
⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
# Staging binary (use --staging flag)
curl -fsSL https://agentfield.ai/install.sh | bash -s -- --staging
# Python SDK (prerelease - requires --pre flag)
pip install --pre agentfield
# TypeScript SDK
npm install @agentfield/sdk@next
VERSION=v0.1.140-rc.6 curl -fsSL https://agentfield.ai/install.sh | bash
Download the binary for your platform below, make it executable, and move it to your PATH.
agentfield-darwin-amd64agentfield-darwin-arm64agentfield-linux-amd64agentfield-linux-arm64af call rejecting valid input for optional reasoner params by @AbirAbbas in https://github.com/Agent-Field/agentfield/pull/610_current_status issue where status stuck on `S… by @DebanKsahu in https://github.com/Agent-Field/agentfield/pull/673af install by @AbirAbbas in https://github.com/Agent-Field/agentfield/pull/738Note truncated.
Restarts always mint a new execution id, so a consumer polling the id it originally received has no way to discover that the work continued somewhere else. Record the successor on the source row instead.
Adds restarted_as_execution_id to executions and workflow_executions (migration 036, mirrored in the SQLite models so AutoMigrate picks it up), a SetExecutionRestartedAs writer, and the execution-filter predicates the resume sweep needs: updated_at bounds, terminal-only, root-only and status-reason matching.
Also defines the agent_shutdown_cancelled status reason and the cross-SDK "cancelled during graceful shutdown" literal it keys off, so a reasoner cancelled by a draining pod stops being indistinguishable from a user cancel.
Co-Authored-By: Claude Fable 5.1 noreply@anthropic.com
Splits the restart mechanics out of the gin handler into startRestart so the same path can be driven without an HTTP request, keeping the endpoint's status codes, headers, body and queue-full behaviour byte-identical.
Every restart now stamps the forward pointer on the source execution and on the run root it restarted, and mirrors it into the source run's lineage metadata. GET /executions/{id} returns it as restarted_as, but only once the successor actually resolves, so a consumer is never handed a pointer into a run that has since been cleaned up. A healthy execution costs no extra query.
A terminal cancelled callback carrying the SDK graceful-shutdown error is stored as agent_shutdown_cancelled. The SDK's fire-and-forget lifecycle event stream is the path that actually terminalizes a drain-cancelled orchestrator in practice, so it classifies identically.
Co-Authored-By: Claude Fable 5.1 noreply@anthropic.com
A rolling deploy that kills a long-running orchestrator leaves its run terminally dead; the only recovery is the caller re-submitting. With AGENTFIELD_RESUME_INTERRUPTED_RUNS=true the control plane does that itself: an interrupted run root is handed to the existing workflow-scope restart with reuse all-succeeded, so children that already succeeded are replayed rather than dispatched again, and the dead execution is stamped with the forward pointer.
Interruption means agent_restart_orphaned, control_plane_shutdown or agent_shutdown_cancelled — nothing else is ever resumed. Any of the three can terminalize a run, so the handoff is triggered from the orphan reap, the status callback, the lifecycle-event stream, and a bounded sweep at startup for the case where the control plane itself restarted.
Bounded on purpose: run roots only, never an execution that already has a successor, chain depth capped by _MAX_ATTEMPTS, startup capped by _LIMIT and _WINDOW, and no storage query at all when disabled. Inline handoffs are scheduled after _DELAY on a detached context with every guard re-evaluated against a freshly read record, so the replacement pod has registered before the successor is dispatched and two triggers for the same root still produce one successor.
Co-Authored-By: Claude Fable 5.1 noreply@anthropic.com
An execution created while the old pod is gone and the replacement has not yet registered is stamped with the departing instance id, and the deferred reap then fails it. Measured end to end: the handoff's successor ran to completion on the new pod while the control plane had already marked it agent_restart_orphaned.
The reap now carries the instant the replacement registered and skips any row created at or after it — work created after a replacement announces itself cannot belong to the process that left. A zero cutoff behaves exactly as before, so existing callers are unaffected. Wall-clock based and therefore approximate under control-plane clock skew; the stale-execution sweep remains the backstop.
Co-Authored-By: Claude Fable 5.1 noreply@anthropic.com
The Python and TypeScript SDKs both report a reasoner cancelled by their own graceful shutdown as status cancelled with the error "cancelled during graceful shutdown". The Go SDK reported status failed with the raw "context canceled", so a Go agent's drain looked like an ordinary failure and the control plane could not tell it apart from a real error.
Only a cancellation caused by the agent's own shutdown is remapped; a caller cancellation or a timeout keeps its current behaviour.
Co-Authored-By: Claude Fable 5.1 noreply@anthropic.com
Documents the forward pointer on execution reads, the agent_shutdown_cancelled status reason, and the five AGENTFIELD_RESUME_INTERRUPTED_* knobs, in the same tables the existing drain and reap settings live in.
Says plainly that the orchestrator re-executes from its first line — there is no snapshot of interpreter state — and that what makes the restart cheap is replaying the already-succeeded app.call children.
Adds a Limitations section rather than overselling: single control plane, one attempt per interruption, stale-sweep timeouts are not resumed, the startup sweep is one bounded page per boot, the attempt counter is best-effort metadata, and the reap cutoff is wall-clock based.
Co-Authored-By: Claude Fable 5.1 noreply@anthropic.com
Covers the config-merge branches for the new resume settings, the restart endpoint's validation and load-failure paths, and the handoff's guards: each interruption reason and a rejected one, lineage attempt resolution when the store cannot read run metadata or the metadata is absent or malformed, and the early returns when the feature is off or the restart itself fails.
Co-Authored-By: Claude Fable 5.1 noreply@anthropic.com
Co-authored-by: Claude Fable 5.1 noreply@anthropic.com (ee7d65d)
Your coding agent can read these notes before it upgrades. Set up the MCP server →