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.
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.95-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-arm64Full Changelog: https://github.com/Agent-Field/agentfield/compare/v0.1.95-rc.2...v0.1.95-rc.3
This reverts commit bc0f7c78171353ed82b3b1da7fed2677d538aa2d.
This reverts commit 8ff2bc7ada89168ba6206a83a9dd573387d340c4. (bee7eb5)
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.95-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-arm64Full Changelog: https://github.com/Agent-Field/agentfield/compare/v0.1.95-rc.1...v0.1.95-rc.2
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.95-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-arm64Full Changelog: https://github.com/Agent-Field/agentfield/compare/v0.1.94...v0.1.95-rc.1
mustJSONReader discarded the json.Marshal error and returned a reader over a nil byte slice. When a value could not be serialized (unsupported type, cyclic struct, channel, func), the control-plane POST was sent with an empty body — silently storing nothing or overwriting with an empty value — and the real error never reached the caller.
Replace it with jsonReader(v any) (io.Reader, error) and propagate the error at each call site (Set, Get, Delete, SetVector, SearchVector), all of which already return an error.
Adds a test asserting an unserializable value yields an error instead of an empty reader. Fixes #434.
Co-authored-by: santoshkumarradha santosh@agentfield.ai (f9666c9)
`bash curl -fsSL https://agentfield.ai/install.sh | bash `
curl -fsSL https://agentfield.ai/install.sh | bash
VERSION=v0.1.94 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.93...v0.1.94
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.94-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-arm64Full Changelog: https://github.com/Agent-Field/agentfield/compare/v0.1.94-rc.2...v0.1.94-rc.3
Adds crypto.sign/verify and generate_ed25519_keypair — compact JWS over an Ed25519 key, wire-compatible with the TS SDK's jose CompactSign. Encryption (JWE) proves confidentiality only; signing lets a recipient verify a payload's ORIGIN. Used by the discuss/aggregator split so the aggregator accepts only hax-sdk-signed scopes (sign-then-encrypt), closing a cross-tenant forgery gap.
Implemented directly over cryptography Ed25519 rather than joserfc (which
rejects alg=EdDSA per RFC 9864); alg is pinned to EdDSA so a forged header
cannot downgrade to none. Interop verified both directions (jose <-> this) plus
negatives (wrong key, tampered, alg=none/HS256, malformed). 21 crypto tests, ruff clean.
Co-authored-by: Claude Opus 4.8 (1M context) noreply@anthropic.com (2243032)
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.94-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-arm64Full Changelog: https://github.com/Agent-Field/agentfield/compare/v0.1.94-rc.1...v0.1.94-rc.2
Reworks the Python harness directory, permission, and schema-output contracts so they are consistent across all four providers and match the Go SDK.
Directory model (#684, #686):
Permissions (#687):
Incremental schema (#688):
Adds project_dir and schema_mode to app.harness() and HarnessConfig. Full harness test coverage for every provider's flag mapping and the incremental field-recovery path.
Closes #684 Closes #686 Closes #687 Closes #688 (ff6f043)
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.94-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-arm64Full Changelog: https://github.com/Agent-Field/agentfield/compare/v0.1.93...v0.1.94-rc.1
`bash curl -fsSL https://agentfield.ai/install.sh | bash `
curl -fsSL https://agentfield.ai/install.sh | bash
VERSION=v0.1.93 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.92...v0.1.93
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.93-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-arm64Full Changelog: https://github.com/Agent-Field/agentfield/compare/v0.1.92...v0.1.93-rc.1
app.ai(schema=...) sent strict: True alongside Pydantic's raw
model_json_schema(), which omits additionalProperties: false and a
complete required list. OpenAI rejects such schemas with
BadRequestError: Invalid schema ... 'additionalProperties' is required to be supplied and to be false, so every structured-output call against
OpenAI failed and callers silently degraded to unstructured text.
Add _strictify_openai_schema: recursively set additionalProperties: false and require all properties (including nested $defs) before
sending. Surfaced while deploying the discuss agent, whose app.ai
phrasing fell back to raw retrieved context on every call.
Co-authored-by: Claude Opus 4.8 noreply@anthropic.com (79ae8b9)
`bash curl -fsSL https://agentfield.ai/install.sh | bash `
curl -fsSL https://agentfield.ai/install.sh | bash
VERSION=v0.1.92 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-arm64_current_status issue where status stuck on `S… by @DebanKsahu in https://github.com/Agent-Field/agentfield/pull/673Full Changelog: https://github.com/Agent-Field/agentfield/compare/v0.1.91...v0.1.92
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.92-rc.20 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.92-rc.19...v0.1.92-rc.20
feat: restart workflow runs with replay reuse
Polish restart recovery UI states
Fix run detail test mocks for restart hooks
Cover Python restart replay SDK paths
Show reused nodes in restart views
Cover restart provenance UX paths
Stabilize restart replay functional test
Stabilize restart replay coverage
refactor(restart): apply pr-af code review recommendations
pr-af (https://github.com/Agent-Field/pr-af) reviewed the workflow restart/replay change and recommended these follow-ups, applied here:
Adds TestFillReuseSourceRun covering the back-fill behavior.
Co-authored-by: Claude noreply@anthropic.com Co-authored-by: Abir Abbas abirabbas1998@gmail.com (e4d8596)
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.92-rc.19 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.92-rc.18...v0.1.92-rc.19
Bumps the uv group with 2 updates in the /sdk/python directory: msgpack and pydantic-settings.
Updates msgpack from 1.1.2 to 1.2.1
Updates pydantic-settings from 2.13.1 to 2.14.2
updated-dependencies:
Signed-off-by: dependabot[bot] support@github.com Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (fbc2fc2)
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.92-rc.18 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.92-rc.17...v0.1.92-rc.18
Each agent DID now gets an X25519 encryption key derived from the master
seed (distinct HKDF salt from the Ed25519 signing key, so signing and
encryption keys are independent). The public key is exposed in DID
resolution — as a flat key_agreement JWK on the did:key resolve response
and as a W3C keyAgreement (X25519KeyAgreementKey2020) entry in the DID
document — and the private key is returned to the agent at registration.
This enables encrypting a payload to an agent's DID (JWE ECDH-ES+A256GCM) that only that agent can decrypt, underpinning the discuss/aggregator split.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Add agentfield.crypto: encrypt_for_did/decrypt/encrypt_to_jwk, generate_x25519_keypair and load_private_key. Encrypts a payload to an agent's published X25519 keyAgreement key using standard JWE compact (ECDH-ES + A256GCM) via joserfc, decryptable only by the holder of the matching private key. Interoperable with the TypeScript SDK.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Add crypto/didEncryption: encryptForDid/decrypt/encryptToJwk, generateX25519KeyPair. Mirrors the Python SDK using jose; a ciphertext produced here decrypts in Python and vice-versa. Used by hax-sdk to encrypt a scoped payload to the aggregator's DID.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
run_interop.sh exercises the real TypeScript and Python SDK crypto in both directions (TS<->Python) to guard the wire-format contract.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Introduce internal/embedding with an Embedder interface (Embed/Dimensions), an OpenAIEmbedder (text-embedding-3-small, 1536 dims) and a deterministic, network-free FakeEmbedder at the same pinned dimension. The dimension is pinned centrally because the shared vector index is fixed-dimension; callers must not embed with mismatched models. NewFromConfig falls back to the FakeEmbedder when no OpenAI key is set so the store works locally with zero external deps.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Add internal/knowledge: a Service that embeds caller-supplied TEXT and stores it in the existing scoped vector store, reusing the SetVector/SimilaritySearch/ DeleteVectorsByPrefix surface. Chunks are namespaced ws:<workspaceID> or proj:<projectID>; a workspace search matches only its namespace, a project search matches its own namespace AND the parent workspace's (inheritance).
Defense in depth: the scope is applied in the vector query (namespace scopeID + workspace_id metadata filter) AND every returned chunk is re-verified in Go before returning; mismatches are dropped and logged. Empty workspace_id is rejected so an unscoped query is structurally impossible.
Handlers wire POST /knowledge/upsert, POST /knowledge/search, and DELETE /knowledge/source/:id, mapping scope/argument errors to 400 and embed/store failures to 500.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Add a features.knowledge config section (enabled, provider, openai key/model) with OPENAI_API_KEY (and AGENTFIELD_KNOWLEDGE_*) env overrides. Build the embedder from config at server startup (FakeEmbedder fallback when no key), construct the knowledge Service over the storage provider, and register the /api/v1/knowledge routes (skipped when the feature is disabled).
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Fold a per-agent rotation epoch into the X25519 HKDF derivation (info = <path>/enc/<epoch>) so each epoch yields an independent keyAgreement keypair. Adds deriveX25519PrivateKeyAtEpoch and regenerateX25519KeyPairJWKAtEpoch; the existing epoch-less helpers delegate to epoch 0.
Store X25519Epoch on AgentDIDInfo (and surface it on DIDIdentity). RegisterAgent starts new agents at epoch 0; ResolveDID, the re-registration path, and PartialRegisterAgent all derive at the agent's CURRENT stored epoch and preserve it across re-registration.
RotateAgentX25519Key(did) increments the agent-node's epoch, re-derives + persists the new public key, and returns (newPub, epoch). Reasoner/skill/root DIDs error clearly. Exposed over POST /api/v1/did/key-agreement/rotate, returning the new x25519_public_key_jwk object + epoch.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Service tests: RotateAgentX25519Key changes the stored pub + increments epoch; ResolveDID after rotation returns the new pub with a matching priv; same (seed,path,epoch) derives identically while distinct epochs diverge. HTTP test: POST /api/v1/did/key-agreement/rotate returns a new X25519 public JWK (no private d) and a subsequent resolve returns the same rotated key. Update the DIDService interface stubs for the new RotateAgentX25519Key method.
Extend cmd/x25519gen to emit epoch0/epoch1 keypairs so the SDK crypto cross-check can confirm an epoch1 private key cannot decrypt a payload encrypted to the epoch0 public key.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Extend the scope-aware knowledge store with a third tier, "sender", in addition to workspace/project.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Service-level tests: sender-scoped upsert+search, additive ws+proj+sender visibility, cross-sender isolation (sender A never sees sender B, and a workspace-only query never sees sender chunks), sender source delete, and rejection of sender tier without sender_id.
Handler-level tests (new knowledge_test.go in handlers): drive the gin upsert/search/delete handlers over an in-memory vector store to assert the additive set, cross-sender isolation, empty workspace_id -> 400, and sender tier without sender_id -> 400.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
The rotation work made deriveX25519PrivateKeyAtEpoch the sole derivation
path; the epoch-less wrapper had no remaining callers. Removing it clears
the golangci-lint unused finding introduced by this branch.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Adds httptest-server tests for OpenAIEmbedder.Embed: happy path (request shape, model/input, bearer auth, index-ordered parsing), plus the empty-input short-circuit, missing-API-key, non-200 (with and without an error body), malformed body, vector-count mismatch, dimension mismatch and transport-failure paths. Also covers the WithModel/WithEndpoint/WithHTTPClient option setters and their empty-value no-ops.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Covers ApplyEnvOverrides for the knowledge block: OPENAI_API_KEY adopted only when the knowledge key is empty (and not overriding an existing key), the explicit AGENTFIELD_KNOWLEDGE_OPENAI_API_KEY winning, and the provider/model/enabled overrides (with trimming). Also covers KnowledgeConfig.IsEnabled defaulting (nil => true) and explicit true/false.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Tests the standalone x25519gen interop command: deterministic HKDF derivation for a fixed (seed, path, epoch), epoch divergence (rotation retires the prior key), JWK shape (public has no private d, private carries a non-empty d, x components agree and round-trip a 32-byte X25519 key), and an end-to-end main() invocation.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Service: validation errors (empty source_id/chunks/chunk-text, empty query), embedder failure and vector-count mismatch on upsert/search, store failures (SetVector/SimilaritySearch/DeleteVectorsByPrefix), and the topK<=0 default.
Handlers: malformed-JSON 400s for upsert/search/delete, missing path id, the internal-error (500) mapping via a failing store, the validation->400 mapping, and isKnowledgeValidationError classification across its fragments including the internal-error fall-through.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Service RotateAgentX25519Key: rejects empty DID, unknown DID, the root DID, and reasoner/skill component DIDs with precise errors; plus the rotation invariant that the epoch-N+1 private key differs from the retired epoch-N key.
Handlers: RotateX25519Key invalid-body/missing-did/service-error/malformed-key fallback, ResolveDID's warn-and-omit branch for a malformed X25519 JWK, and a new GetDIDDocument test asserting the W3C keyAgreement verification method, x25519-2020 @context, and that the private d is never leaked.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
No code change. The previous coverage workflow checked out a merge ref that predated the added Go coverage tests (ran the embedding package in 0.004s, i.e. without openai_test.go), reporting a stale 64% patch coverage. The tests are present on the branch and bring control-plane patch coverage to ~85% locally; this empty commit forces GitHub to recompute the merge ref.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Co-authored-by: Claude Opus 4.8 noreply@anthropic.com (9e613cd)
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.92-rc.17 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.92-rc.16...v0.1.92-rc.17
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.92-rc.16 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.92-rc.15...v0.1.92-rc.16
Add ARD discovery workspace
Complete ARD discovery UX and callable imports
Fix ARD review blockers
Add ARD PR screenshots (7336b9b)
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.92-rc.15 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.92-rc.14...v0.1.92-rc.15
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.92-rc.14 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.92-rc.13...v0.1.92-rc.14
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.92-rc.13 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-arm64_current_status issue where status stuck on `S… by @DebanKsahu in https://github.com/Agent-Field/agentfield/pull/673Full Changelog: https://github.com/Agent-Field/agentfield/compare/v0.1.92-rc.12...v0.1.92-rc.13
_current_status issue where status stuck on STARTING mode. (#673) (6a7ce08)> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.92-rc.12 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.92-rc.11...v0.1.92-rc.12
updated-dependencies:
Signed-off-by: dependabot[bot] support@github.com Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (af60fca)
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.92-rc.11 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.92-rc.10...v0.1.92-rc.11
Bumps the npm_and_yarn group with 3 updates in the /control-plane/web/client directory: vite, js-yaml and ws. Bumps the npm_and_yarn group with 3 updates in the /sdk/typescript directory: vite, ws and form-data.
Updates vite from 8.0.5 to 8.0.16
Updates js-yaml from 4.1.1 to 4.2.0
Updates ws from 8.19.0 to 8.20.0
Updates vite from 6.4.2 to 8.0.16
Updates ws from 8.20.1 to 8.21.0
Updates form-data from 4.0.5 to 4.0.6
updated-dependencies:
Signed-off-by: dependabot[bot] support@github.com Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (ffd0717)
Bumps the uv group with 1 update in the /sdk/python directory: pyjwt.
Updates pyjwt from 2.12.1 to 2.13.0
updated-dependencies:
Signed-off-by: dependabot[bot] support@github.com Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (2cb06f0)
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.92-rc.10 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.92-rc.9...v0.1.92-rc.10
feat: add linear and sentry integrations
docs: clarify integration event filters
test: cover linear and sentry capability runtimes
fix(linear): bearer prefix for OAuth tokens; hash idempotency fallback
lin_oauth_ prefix and sends Authorization: Bearer <token> for OAuth access tokens. Personal API keys (lin_api_
and other prefixes) continue sending the token raw per Linear's docs.Linear-Delivery header is absent, fall
back to sha256(webhookId || timestamp || type || action) instead of
the body's webhookId alone — webhookId identifies the subscription,
not the delivery, so the old fallback would collapse distinct events.limit param to per_page so
pagination shape matches ListIssueEvents and Sentry's de-facto API.
Keep the deprecated project-scoped issues endpoint with a TODO to
migrate once we can resolve project slug → id.Mirrors the Linear source's replay-protection pattern. Default tolerance
is 300s (Sentry doesn't document a recommended window, so this matches
Stripe's). Set tolerance_seconds: 0 in the trigger config to disable.
Parses Sentry-Hook-Timestamp as RFC3339, unix seconds, or unix milliseconds — Sentry's docs only show 'a timestamp', so accept the common formats. Missing or unparseable headers fail closed when tolerance > 0.
EU-region Sentry orgs MUST use https://de.sentry.io. US-region orgs should use https://us.sentry.io. The default https://sentry.io only works for legacy US-only orgs and returns 401/403 for everyone else with no clear hint about region. Surface this in:
Ref https://docs.sentry.io/organization/data-storage-location/.
The Linear and Sentry capability runtimes shipped byte-identical requiredString/stringInput/intInput/objectInput helpers plus a duplicated firstNonBlank in each node's config. Hoist them to a new sdk/go/inputs package with capitalized public names and migrate both nodes.
Databricks and Snowflake nodes still have their own copies — they carry extra helpers (boolInput, compactJSON) that aren't shared yet. A follow-up can pull those in once the helper surface stabilizes.
PR #661 swapped the inline DatabricksGlyph for SiDatabricks from
react-icons (consistent with how Stripe/GitHub/etc. now render).
The Databricks UI test hard-coded an expectation of 3 <path>
elements from the old hand-drawn glyph. Relax the assertion to 'at
least one path' so the test pins icon presence without coupling to
the exact SVG markup of whichever icon library renders it. (edee822)
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.92-rc.9 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.92-rc.8...v0.1.92-rc.9
Add Databricks integration pack
Remove Databricks docs page from integration PR
Cover Databricks trigger UI defaults
fix(trigger-dispatcher): clean up orphan Execution + document 202 path
If StoreWorkflowExecution fails after CreateExecutionRecord succeeds, the Execution row was previously stranded in Running. Now fail it so the partial state is observable.
Also document why we deliberately skip completeDispatchExecution on a 202 Accepted response: the node owns async completion via the reasoner-result callback path. (81e464d)
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.92-rc.8 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.92-rc.7...v0.1.92-rc.8
Add explicit realtime session DX
fix: align session route wildcards
test: cover session control-plane paths
docs(examples): add voice dictation example for realtime sessions
Runnable demo of the @app.session WebRTC voice flow: browser mic -> control-plane SDP proxy -> OpenAI Realtime, with live transcription and the tools=[...] allowlist routing through execute/async. Includes WSL setup notes and the GA session.update shape (session.type + audio.input nesting) required for input transcription + server VAD.
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com
Add session access tags and UI surfaces (#655)
Add session access tags and UI surfaces
test: update session access UI expectations
test: align session access CLI coverage
test: cover session playground tools
test: cover session access UI paths
fix(examples): make voice dictation example resilient to the session route rename
#655 renamed the realtime-offer route (/sessions -> /session-instances). The page now tries the /session-instances route first and falls back to /sessions, so it works against #654 alone and against #654+#655.
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com
Co-authored-by: Abir Abbas abirabbas1998@gmail.com Co-authored-by: Claude Opus 4.8 (1M context) noreply@anthropic.com (e776f3f)
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.92-rc.7 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.92-rc.6...v0.1.92-rc.7
Fix: harden snowflake trigger polling (2e1be49)
Fix: avoid tainted snowflake request URLs (35e1e32)
Fix: constrain snowflake sql api URLs (66069b1)
Fix: validate snowflake account URLs (d14ebe9)
Test: cover snowflake error branches (7214d0c)
Test: exercise snowflake validation branches (5eec124)
Test: cover snowflake URL validation (d9ceba8)
Test: raise snowflake integration coverage (56aa6c0)
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.92-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-arm64Full Changelog: https://github.com/Agent-Field/agentfield/compare/v0.1.92-rc.5...v0.1.92-rc.6
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.92-rc.5 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.92-rc.4...v0.1.92-rc.5
Chore(deps): patch remaining esbuild alerts (4647c47)
Chore(deps-dev): bump esbuild (#657)
Bumps the npm_and_yarn group with 1 update in the /examples/benchmarks/100k-scale/mastra-bench directory: esbuild.
Updates esbuild from 0.28.0 to 0.28.1
updated-dependencies:
Signed-off-by: dependabot[bot] support@github.com Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (46a9b70)
Nothing published for this version
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.92-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-arm64Full Changelog: https://github.com/Agent-Field/agentfield/compare/v0.1.92-rc.3...v0.1.92-rc.4
fix: Updated the startup and shutdown events, now they are using lifespan.
fix: solved the lifespan override issue.
fix: yield was outside of the context block of AsyncExitStack(), pull it back to inside.
test(sdk-python): cover merged agent lifespan
Co-authored-by: Santosh santosh@agentfield.ai (bdd016d)
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.92-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-arm64Full Changelog: https://github.com/Agent-Field/agentfield/compare/v0.1.92-rc.2...v0.1.92-rc.3
issue/go-sdk-note-url-fix: Remove /api/ui/v1 URL substitution from sendNote(), update test expectedPath
issue/python-sdk-note-url-fix: remove /api/ui/v1 URL substitution from note() and update test assertion
chore: remove tracked build artifacts and fortify .gitignore
Co-authored-by: SWE-AF eng@agentfield.ai (9038969)
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.92-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-arm64Full Changelog: https://github.com/Agent-Field/agentfield/compare/v0.1.92-rc.1...v0.1.92-rc.2
The Release workflow auto-bumps a staging rc on every push to main by
calling scripts/bump_version.py --channel prerelease .... The bump
logic computed the next counter purely from VERSION, with no awareness
of which tags already existed on the remote. When VERSION lagged behind
the latest prerelease tag (e.g. VERSION=0.1.91 while v0.1.92-rc.1 was
already pushed by an earlier run), the script kept emitting the same
0.1.92-rc.1 and git tag -a failed with "tag already exists", killing
every subsequent run.
This change:
git ls-remote --tags and skips counters that
already exist there, so the script returns the first free counter
(0.1.92-rc.2 in the failure case above).--skip-tag-check opt-out for tests and offline use.No release workflow changes are required; the existing call site already passes the same flags. (88cb1af)
Aligns test_serverless_agents.py with the rest of the functional suite, which already defaults TEST_AGENT_BIND_HOST to 127.0.0.1 (see tests/functional/ conftest.py and test_quick_start.py). Docker Compose overrides set the env variable explicitly when 0.0.0.0 is required. Closes CodeQL alert #35 (py/bind-socket-all-network-interfaces). (c93b884)
Adds npm "overrides" entries to upgrade the top-level @ai-sdk/provider-utils and the @ai-sdk/provider-utils-v5 alias used by @mastra/core to 4.0.27, removing the vulnerable 2.2.8 and 3.0.20 copies from the lockfile. Closes Dependabot alert #191 (CVE-2026-8769, GHSA-866g-f22w-33x8). (f5a341b)
Adds npm "overrides" entry pinning all transitive copies of postcss to the direct dependency version (8.5.15), removing the nested 8.4.31 bundled inside Next.js. Closes Dependabot alert #136 (GHSA for PostCSS </style> XSS). (69f086e)
Introduce a RouteRegistrar interface in the handlers package that all handler types implement, and change their RegisterRoutes parameter from the concrete *gin.RouterGroup to the gin.IRouter interface. This enables polymorphic route composition and allows testing with lightweight router mocks.
Affected handler types:
issue/agent-methods-typing: unwrap tracked wrapper in app.call() to preserve original function signature
issue/core-decorators-typing: add overloads, ParamSpec, and TypeVar annotations to core decorators
issue/537b5155-04-testing-typing: add mypy configuration and fix type annotations in test files
issue/537b5155-04-testing-typing: add generic TypeVar R to simulate_trigger and simulate_schedule
issue/agent-methods-typing: preserve type signatures on Agent.reasoner(), skill(), on_change() and module-level decorators
fixup: correct indentation of nested decorator functions inside reasoner, on_event, on_schedule
issue/537b5155-05-typing-verification: fix mypy errors in decorators and router
Remove unused imports (inspect, cast), drop the shadowed local re-import of _execute_with_tracking, and apply ruff format to the touched test files so 'ruff check .' passes again.
Co-Authored-By: Claude Fable 5 noreply@anthropic.com
simulate_trigger/simulate_schedule await coroutines transparently, so a single Callable[..., R] -> R signature bound R to the coroutine for async handlers while the function actually returns the awaited value. Add an Awaitable[R] overload ahead of the plain R one so both sync and async reasoners reveal the awaited type.
Also move the TypeVar below the imports (E402) and make the mypy reveal fixtures runtime-importable via typing_extensions.reveal_type (F821), extending them to cover the async case.
Co-Authored-By: Claude Fable 5 noreply@anthropic.com
The body intentionally rewrites args (Pydantic conversion) and injects kwargs (execution_context, trigger) beyond what the caller passed, which mypy rejects against P.args/P.kwargs. Keep the ParamSpec signature for caller-side inference and ignore the three body mutation sites; also apply ruff format to the new long annotations.
Co-Authored-By: Claude Fable 5 noreply@anthropic.com
Co-authored-by: SWE-AF eng@agentfield.ai Co-authored-by: Claude Fable 5 noreply@anthropic.com Co-authored-by: Santosh santosh@agentfield.ai (9108f75)
Add OpenRouter attribution request metadata defaults across the SDKs and harness paths without changing provider credentials or AgentField control-plane auth. (9b59ecd)
Reverts the accidental over-merge from PR #641, including the generated release bump that followed it. (546aacf)
Fixes #644
The "No events received yet..." copy in TriggerSheet only renders after the async refreshEvents() fetch resolves and loadingEvents flips back to false. The test used a synchronous getByText, which raced the fetch under CI load and intermittently failed with TestingLibraryElementError.
Switch to findByText so the assertion waits for the loading state to clear, matching the pattern already used elsewhere in the file for async-mounted UI. (074c65e)
Nothing published for this version
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.92-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-arm64Full Changelog: https://github.com/Agent-Field/agentfield/compare/v0.1.91...v0.1.92-rc.1
`bash curl -fsSL https://agentfield.ai/install.sh | bash `
curl -fsSL https://agentfield.ai/install.sh | bash
VERSION=v0.1.91 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.90...v0.1.91
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.91-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-arm64Full Changelog: https://github.com/Agent-Field/agentfield/compare/v0.1.91-rc.1...v0.1.91-rc.3
issue/fix-get-logger-name-bug: fix get_logger to respect name parameter using dictionary cache
chore: finalize repo for handoff
fix(logger): guard logger cache with a lock for thread-safe access
The per-name logger cache introduced in this PR is shared mutable module
state. get_logger() could insert into _logger_cache while
set_log_level()/set_cp_client() iterate .values(), raising
RuntimeError: dictionary changed size during iteration.
Add a reentrant lock around all cache access. set_log_level/set_cp_client snapshot the values under the lock and apply outside it, so we never hold the lock during the loggers' own work. Addresses the thread-safety findings from the PR review.
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com
Three issues in the new logger test:
AgentFieldLogger, _global_log_level) that
failed ruff check (F401) and broke CI lint on 3.10/3.11/3.12.global _global_log_level = None only rebound this
module's copy, never the real agentfield.logger global, so the level
reset silently did nothing. Reference the module so the reset bites.AgentFieldLogger mutates the stdlib logging registry (adds a handler,
sets propagate=False). Those mutations outlived each test and leaked
across the session. The fixture now snapshots and restores the registry
so this file is order-independent and can't mute unrelated loggers.Also add a concurrency test exercising get_logger()/set_log_level() from several threads, locking in the thread-safety fix.
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com
Fixing get_logger() to honour the requested name means get_logger()
now creates the real "agentfield" logger, on which the SDK sets
propagate=False. That stops every "agentfield.*" child (including the
plain "agentfield.cancel" logger) from reaching the root logger — where
pytest's caplog handler lives. The assertion only ever passed because
the old singleton bug meant the real "agentfield" logger was usually
never created, so this was silently order-dependent and failed once
test_logger ran first.
Attach a handler directly to the "agentfield.cancel" logger instead. It asserts the identical contract (an INFO "cancel-callback fired" record is emitted) but is independent of namespace propagation and suite ordering. Use getMessage() since no formatter runs to set record.message on a bare handler.
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com
Document the behavior change flagged in review: set_log_level() now only records the level and updates cached loggers; it no longer creates the default logger as a side effect. New loggers pick up the stored level when created via get_logger().
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com
A pre-existing flake surfaced on Python 3.12 CI: tests that rely on the agent / execution-context ContextVars (e.g. test_execute_with_tracking_registers_child_context) intermittently saw get_current_agent_instance() return None mid-test, skipping workflow registration (assert 0 == 1). The suite also leaked many fire-and-forget asyncio tasks across tests ("Task was destroyed but it is pending!").
Add an autouse fixture that resets the agent/execution-context ContextVars around every test and best-effort drains tasks the test left pending, so ordering and stray tasks can't pollute later tests. All teardown work is guarded to never raise. Verified locally on 3.10 and 3.12: full suite green and the leaked-task warnings drop from dozens to zero.
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com
set_cp_client() only mutated loggers already in the cache, so any logger
created afterward kept the class default _cp_client=None and silently
dropped all structured telemetry in _dispatch_to_cp(). The concrete victim
is the agentfield.verification logger: it is created at module import time
inside Agent.init (lazy from agentfield.verification import LocalVerifier)
which runs after set_cp_client(self.client), so under local_verification=True
none of its execution logs ever reached the control plane.
Mirror the existing _global_log_level pattern: record the client in a module-level _global_cp_client under the cache lock, and apply it to new loggers in get_logger(). Forwarding now works regardless of import/creation order. set_cp_client(None) detaches globally as well.
Add regression tests covering loggers created after set_cp_client, the existing already-cached path, and the None reset; extend reset_logger_state to isolate the new global.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Co-authored-by: SWE-AF eng@agentfield.ai Co-authored-by: Claude Opus 4.8 (1M context) noreply@anthropic.com (ccfde97)
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.91-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-arm64Full Changelog: https://github.com/Agent-Field/agentfield/compare/v0.1.91-rc.1...v0.1.91-rc.2
Agent.call() resolved the parent execution via
_get_current_execution_context(), which falls back to the process-global
self._current_execution_context when no task-local context is set. That
attribute is a single slot overwritten at the top of every reasoner
invocation, so in a server running overlapping executions it holds whichever
reasoner was most recently dispatched.
When a call originates OUTSIDE any execution — e.g. a webhook handler's fire-and-forget asyncio task — it has no task-local context, so the fallback attributed it to an unrelated, possibly still-in-flight execution (one paused on a human-in-the-loop approval for hours). The control plane then recorded that bystander as the new run's parent, chaining independent webhook-triggered runs into one bogus workflow DAG and cross-wiring the pause-clock / budget cascades that key off parent_execution_id.
Resolve the parent in call() from the task-local contextvar only
(get_current_context()). asyncio.create_task copies the contextvar, so
genuine sub-calls made from within a reasoner still nest correctly; when the
contextvar is absent we mint a fresh root so the call starts its own workflow
(matching cold-process behavior). _get_current_execution_context() is left
unchanged for its other consumers (pause/note/vc), which run within an
execution where the contextvar is set.
Tests: a call with a stale bystander on the shared attr but no task-local context must start a fresh root (not inherit it); a call from within an execution still nests under that execution.
Co-authored-by: Claude Opus 4.8 noreply@anthropic.com (db4d2b1)
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.91-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-arm64Full Changelog: https://github.com/Agent-Field/agentfield/compare/v0.1.90...v0.1.91-rc.1
_handle_schema_with_retry rebuilt the retry prompt from build_followup_prompt() alone on the non-crash branch, dropping the original goal/task. The agent then retried blind and could emit placeholder output (e.g. a "no goal supplied" PRD) that poisoned every downstream reasoner. Prepend options["_original_prompt"] (already populated in run()) so retries carry both the goal and the schema correction. The crash branch already preserved the goal.
Adds test_schema_retry_preserves_original_goal_in_prompt which drives a non-crash schema-invalid first attempt and asserts the retry prompt still contains the original goal.
Fixes #636
Co-authored-by: Claude Opus 4.8 (1M context) noreply@anthropic.com (a7a68da)
`bash curl -fsSL https://agentfield.ai/install.sh | bash `
curl -fsSL https://agentfield.ai/install.sh | bash
VERSION=v0.1.90 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.89...v0.1.90
Pins the CLA status context to "license/cla" so github-buddy's cla_reminder_sweep reads this repo's hosted cla-assistant.io commit status correctly. This differs from github-buddy's own repo, which uses the self-hosted contributor-assistant action (a check-run named "cla").
Only takes effect once the repo is added to the GITHUB_BUDDY_CLA_REPOS roster on the github-buddy deployment.
Co-authored-by: Claude Opus 4.8 (1M context) noreply@anthropic.com (49f9a21)
Nothing published for this version
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.90-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-arm64Full Changelog: https://github.com/Agent-Field/agentfield/compare/v0.1.90-rc.2...v0.1.90-rc.3
Trigger/webhook-invoked reasoners that declare the documented trigger
(or webhook) parameter crashed on every invocation:
cla_reminder_sweep() got multiple values for argument 'trigger'
On the trigger path, _execute_reasoner_endpoint passed the event payload
as the first POSITIONAL argument and separately injected trigger= /
webhook= as a keyword. When the reasoner's first positional parameter
IS one of those injected names (e.g. def r(trigger=None)), both fill the
same slot -> TypeError. The test harness (_bind_reasoner_args /
simulate_trigger) already skipped injected params when assigning the
positional payload, so the bug was invisible to unit tests: runtime and
harness disagreed.
New _bind_trigger_payload() binds the payload to the first parameter that is NOT a framework-injected slot (trigger / webhook / execution_context), by keyword for positional-or-keyword params so a leading injected param can't shift it onto the wrong slot. This mirrors the harness so the runtime and simulate_trigger invoke a reasoner identically. A reasoner whose only parameter is an injected slot now receives the context by keyword and the payload is dropped, instead of crashing.
Adds tests/test_trigger_param_binding.py: 4 end-to-end tests through the real runtime path (HTTP route -> envelope unwrap -> _execute_reasoner_endpoint), including the exact cla_reminder_sweep shape that failed in production, plus 9 unit tests pinning the binding across signature shapes.
Co-authored-by: Claude Opus 4.8 (1M context) noreply@anthropic.com (2a93140)
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.90-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-arm64Full Changelog: https://github.com/Agent-Field/agentfield/compare/v0.1.90-rc.1...v0.1.90-rc.2
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.90-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-arm64Full Changelog: https://github.com/Agent-Field/agentfield/compare/v0.1.89...v0.1.90-rc.1
Bumps the npm_and_yarn group with 1 update in the /examples/benchmarks/100k-scale/mastra-bench directory: hono.
Updates hono from 4.12.18 to 4.12.23
updated-dependencies:
Signed-off-by: dependabot[bot] support@github.com Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (9af26cb)
`bash curl -fsSL https://agentfield.ai/install.sh | bash `
curl -fsSL https://agentfield.ai/install.sh | bash
VERSION=v0.1.89 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.88...v0.1.89
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.89-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-arm64Full Changelog: https://github.com/Agent-Field/agentfield/compare/v0.1.89-rc.3...v0.1.89-rc.4
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.89-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-arm64Full Changelog: https://github.com/Agent-Field/agentfield/compare/v0.1.89-rc.2...v0.1.89-rc.3
Bumps the uv group with 1 update in the /sdk/python directory: starlette.
Updates starlette from 1.0.0 to 1.0.1
updated-dependencies:
Signed-off-by: dependabot[bot] support@github.com Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (e8dd044)
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.89-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-arm64Full Changelog: https://github.com/Agent-Field/agentfield/compare/v0.1.89-rc.1...v0.1.89-rc.2
Bumps the npm_and_yarn group with 1 update in the /control-plane/web/client directory: react-router.
Updates react-router from 7.14.0 to 7.16.0
updated-dependencies:
Signed-off-by: dependabot[bot] support@github.com Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (eec4fbe)
updated-dependencies:
Signed-off-by: dependabot[bot] support@github.com Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (f711c78)
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.89-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-arm64Full Changelog: https://github.com/Agent-Field/agentfield/compare/v0.1.88...v0.1.89-rc.1
docs(readme): swap video upload to renamed agentfield-quick-start asset
docs(readme): swap video to v2 with custom thumbnail frame
docs(readme): move framework comparison up + reframe as capability scoreboard
Promotes the vs-frameworks comparison — currently the 4th most-clicked README link — to a position where it serves both researchers (find it without scrolling to the bottom) and installers (they hit install+code first, scroll past if convinced).
docs(readme): swap video to latest upload
Update README.md
Update README for REST API and SDK descriptions (99d5673)
Nothing published for this version
`bash curl -fsSL https://agentfield.ai/install.sh | bash `
curl -fsSL https://agentfield.ai/install.sh | bash
VERSION=v0.1.88 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.87...v0.1.88
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.88-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-arm64Full Changelog: https://github.com/Agent-Field/agentfield/compare/v0.1.88-rc.1...v0.1.88-rc.2
Renames the bundled agentfield-multi-reasoner-builder skill to plain
agentfield and rewrites it around three changes:
Live docs first: every invocation now fetches agentfield.ai/llms.txt + llms-full.txt + per-page /llm/docs/<slug> before scaffolding, so the agent gets ground-truth SDK signatures instead of a baked-in snapshot that drifts release to release. The bundled references/primitives-snapshot.md is the offline fallback, explicitly stamped as such.
Pattern bias removed: architecture-patterns.md becomes patterns-emerge.md. Patterns are vocabulary for naming what falls out of the five principles, not a menu to copy from. HUNT->PROVE has equal weight with linear refinement, dynamic router, fan-out/recurse, event-driven, etc. The new examples-map.md indexes code/examples/* so the agent picks the closest real build and greps its actual code instead of paraphrased templates.
CLI introspection surface: new references/cli-toolkit.md
documents af doctor, af init, af agent {status,discover,query, run,agent-summary,kb,batch,help}, af logs, af execution, etc.
The skill now prefers af agent kb guide --goal "..." and
af agent discover -q "..." over hand-rolled curl.
Other changes:
Compat:
Aliases field; "agentfield-multi-reasoner-builder"
still resolves to the new skill so existing installs keep working.Verified:
af skill catalog shows agentfield v0.4.0af skill print agentfield-multi-reasoner-builder resolves via aliasFour cosmetic updates to scripts/install.sh that referenced the legacy agentfield-multi-reasoner-builder name. The install logic itself is unchanged — it always installed whatever the af binary's catalog defaults to. (2d16e73)
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.88-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-arm64Full Changelog: https://github.com/Agent-Field/agentfield/compare/v0.1.87...v0.1.88-rc.1
Bumps the npm_and_yarn group with 1 update in the /control-plane/web/client directory: vitest. Bumps the npm_and_yarn group with 1 update in the /sdk/typescript directory: vitest.
Updates vitest from 3.2.4 to 4.1.8
Updates vitest from 3.2.4 to 4.1.8
Updates vitest from 3.2.4 to 4.1.8
Updates vitest from 3.2.4 to 4.1.8
updated-dependencies:
Signed-off-by: dependabot[bot] support@github.com
fix: make vitest 4 dependency update pass
chore(coverage): reset vitest 4 coverage baseline
Signed-off-by: dependabot[bot] support@github.com Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Santosh santosh@agentfield.ai (2221a08)
`bash curl -fsSL https://agentfield.ai/install.sh | bash `
curl -fsSL https://agentfield.ai/install.sh | bash
VERSION=v0.1.87 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/610Full Changelog: https://github.com/Agent-Field/agentfield/compare/v0.1.86...v0.1.87
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.87-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/610Full Changelog: https://github.com/Agent-Field/agentfield/compare/v0.1.87-rc.2...v0.1.87-rc.3
The Python SDK serializes every Optional[...] reasoner parameter (e.g.
pr_url: str | None) as {"type": "object"} in the generated input schema.
af call's client-side validation enforced that declared type, so passing a
concrete scalar to an optional field was rejected before the request was ever
sent:
$ af call pr-af.review --in '{"pr_url": "https://github.com/o/r/pull/1"}'
Error: field "pr_url" must be an object
even though the identical payload over curl worked. Stop enforcing object and array types client-side: the control plane validates structured input and is the source of truth. Required-field presence and scalar type checks (string/integer/number/boolean) are unchanged, so fast feedback for properly-typed fields is preserved.
Verified end-to-end against the pr-af agent on a freshly built binary: the
previously rejected af call pr-af.review --in '{"pr_url": "..."}' now reaches
the reasoner, and a wrong-typed scalar is still caught client-side.
Co-authored-by: Claude Opus 4.8 (1M context) noreply@anthropic.com (e34290b)
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.87-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-arm64Full Changelog: https://github.com/Agent-Field/agentfield/compare/v0.1.87-rc.1...v0.1.87-rc.2
Bumps the npm_and_yarn group with 2 updates in the /sdk/typescript directory: @ai-sdk/provider-utils and axios.
Updates @ai-sdk/provider-utils from 3.0.18 to 4.0.27
Updates axios from 1.15.2 to 1.16.0
updated-dependencies:
Signed-off-by: dependabot[bot] support@github.com Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Abir Abbas abirabbas1998@gmail.com (ee7d177)
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.87-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-arm64Full Changelog: https://github.com/Agent-Field/agentfield/compare/v0.1.86...v0.1.87-rc.1
fix(control-plane): authorize execution note writes(#420)
fix(control-plane): require trusted identity for execution-note writes
Closes the no-auth IDOR bypass flagged in PR #575 review. The execution note write handler resolved caller identity from raw X-Caller-Agent-ID / X-Agent-Node-ID request headers as a last resort. Under the default config (no API key, DID auth off) that header read was the sole identity source, so any caller could spoof ownership and append notes to another agent's execution.
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com
Defense-in-depth for the DID->agent resolution used by execution-note ownership (PR #575 review). The resolver accepted any non-error DID document and any matching agent_dids row regardless of revocation status, so a revoked did:key whose registry entry was marked revoked (auth still passes, it is self-verifying) could resolve to an agent identity.
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com
Co-authored-by: Santosh kumar 29346072+santoshkumarradha@users.noreply.github.com Co-authored-by: Abir Abbas abirabbas1998@gmail.com Co-authored-by: Claude Opus 4.8 (1M context) noreply@anthropic.com (4df64a1)
`bash curl -fsSL https://agentfield.ai/install.sh | bash `
curl -fsSL https://agentfield.ai/install.sh | bash
VERSION=v0.1.86 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.85...v0.1.86
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.86-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-arm64Full Changelog: https://github.com/Agent-Field/agentfield/compare/v0.1.86-rc.1...v0.1.86-rc.2
feat(cli): add reasoner trigger commands
fix(cli): keep trigger streams open
test(cli): cover trigger command flows
Co-authored-by: Abir Abbas abirabbas1998@gmail.com (4d4cf02)
Nothing published for this version
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.86-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-arm64Full Changelog: https://github.com/Agent-Field/agentfield/compare/v0.1.85...v0.1.86-rc.1
The control-plane client attaches X-API-Key (and, when DID auth is configured, the X-Caller-DID / X-DID-Signature / X-DID-Timestamp / X-DID-Nonce headers) as custom request headers on an http.Client with no CheckRedirect. Go's net/http strips Authorization/Cookie on a cross-host redirect but not arbitrary application headers, so a redirect from the configured baseURL to another host would replay the operator's credentials to that host.
Add a CheckRedirect hook that drops every credential header the client attaches when a redirect targets a host other than the originally configured one (compared against via[0], so credentials only reach the operator-configured host across a multi-hop chain). Same-host redirects keep the headers, so ordinary redirect following is unaffected. The credential list is sourced from the did_auth header constants so it cannot drift. Also applied to clients supplied via WithHTTPClient that define no redirect policy.
Refs GHSA-jp8j-g39q-qxwx.
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com
TestDiscoveryLoggingIncludesOptionalRequestID and
TestExecutionCleanupService_StartStopBranches both call
setupExecutionCleanupTestLogger, which swaps the process-global
logger.Logger, while also calling t.Parallel(). When they ran alongside
another parallel test, a sibling reassigned the global logger mid-run, so
the discovery test's captured buffer came back empty and its assertions
("discovery request failed", "request_id":"req-123", "format":"compact")
failed. This broke the coverage (control-plane) job and cascaded into
coverage-summary (missing control-plane.total.txt).
The non-test build is unaffected, so it slipped past the required gates and only showed up in the coverage job's full parallel run.
Drop t.Parallel() from both tests so they run in the serial phase, where nothing else mutates the global logger concurrently -- matching the existing non-parallel logger-swapping tests in execution_cleanup_test.go. Verified by running the previously-failing command 20x clean.
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com
Co-authored-by: Claude Opus 4.8 (1M context) noreply@anthropic.com (6b74c63)
`bash curl -fsSL https://agentfield.ai/install.sh | bash `
curl -fsSL https://agentfield.ai/install.sh | bash
VERSION=v0.1.85 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.84...v0.1.85
> ⚠️ This is a staging/pre-release version for testing. Not recommended for production use.
⚠️ 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.85-rc.13 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.85-rc.12...v0.1.85-rc.13
Bumps the npm_and_yarn group with 1 update in the /control-plane/web/client directory: tmp.
Updates tmp from 0.2.5 to 0.2.7
updated-dependencies:
Signed-off-by: dependabot[bot] support@github.com Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (08cf645)
The Update Download Stats workflow runs every 6 hours and snapshots
binary / PyPI / npm cumulative counts into the badge gist. Docker Hub
pulls were not captured, so the gist's docker field was always 0 and
none of our analytics could reconstruct Docker history.
Docker Hub only exposes a cumulative pull_count (no daily/historical
endpoint on free tier), so the only way to build a daily series is to
snapshot it ourselves. This change adds a Docker Hub fetch alongside
the existing sources, includes it in stats.json.sources.docker, and
rolls it into the displayed total. Failures are non-fatal — the
workflow still updates with docker: 0 if Docker Hub is unreachable.
Verified the JS body end-to-end against a mock github SDK and a live Docker Hub call (11,298 pulls returned at time of validation). (e8afb67)
Your coding agent can read these notes before it upgrades. Set up the MCP server →