Changelog
For detailed release history, see the 1clawAI GitHub repositories.
API stability
The /v1 API is stable. Breaking changes would be accompanied by a new version prefix or clear deprecation notices. New optional fields or endpoints are added in a backward-compatible way.
2026-06 (latest)
Risk Engine + DPoP Token Binding (v0.34.0 — 2026-06-11)
Added
- Risk Engine Phase 1: Geo-velocity (impossible travel detection), first-seen ASN/country drift, honeytoken canary secrets
- Risk Engine Phase 2: DPoP token binding (RFC 9449), Continuous Access Evaluation (auto-revoke on critical)
- Dashboard:
/securitypage with risk events feed and severity filtering - Dashboard:
/security/honeytokenspage for canary secret management - Dashboard: DPoP enforcement toggle in Security settings (off/warn/required)
- SDK:
client.riskresource for risk events, verdicts, and honeytokens - SDK/MCP/CLI:
DPoPManagerfor proof-of-possession token binding - API:
GET/POST/DELETE /v1/risk/honeytokens,GET /v1/risk/events,GET /v1/risk/verdicts - MaxMind GeoLite2 IP enrichment (City + ASN) for risk scoring
- Auth verdict gate: blocks login/token-exchange on high/critical risk score
- Honeytoken detection: silent critical verdict on canary secret read
Security
- Stolen JWTs are now non-replayable when DPoP is enabled (bound to client keypair)
- Critical risk verdicts immediately revoke all active sessions for the principal
- Impossible travel detection catches session replay from different geography
- ASN/country baseline drift flags credential stuffing from unfamiliar sources
Migrations
118_risk_engine_phase1.sql— risk_events, risk_verdicts, principal_baselines, honeytokens119_dpop_and_cae.sql— jwt_bound_keys, dpop_nonces
Embedded Wallets: Email OTP, OAuth2, Spend Policies (v0.33.0)
- New: Email OTP login — Passwordless authentication for embedded wallet end-users via 6-digit email codes.
POST /v1/auth/email-otp/send(rate-limited, 5-min expiry) andPOST /v1/auth/email-otp/verify(returns JWT + auto-provisions treasury wallets on first login). Migration 113. - New: Sign in with 1Claw — Full OAuth2 authorization code flow with PKCE; 1Claw acts as an OIDC provider for third-party apps. Endpoints:
POST /v1/oauth/authorize(code grant),POST /v1/oauth/token(code exchange),GET /v1/oauth/userinfo. Dashboard consent page at/oauth/authorize. OIDC discovery updated to advertiseauthorization_endpoint,userinfo_endpoint, and PKCE (S256). Platform apps configureredirect_urisfor OAuth client registration. Migration 114. - New: Wallet spend policies — Per-app default and per-user override policies for treasury wallet sends and swaps. Controls: recipient
to_allowlist,max_value_ethper-tx cap,daily_limit_eth,allowed_chains. Endpoints:POST/GET/PATCH/DELETE /v1/spend-policies. Enforced server-side before signing treasury wallet transactions. Migration 115. - New: Embedded Wallets marketing page — Landing page at
/embedded-walletsshowcasing the platform for developers (feature grid, code snippets, integration steps). - New: OAuth consent page — User consent UI at
/oauth/authorizefor third-party app authorization with scope display and approve/deny. - SDK: Added
sendEmailOtp(),verifyEmailOtp(),exchangeOAuthCode(), spend policy CRUD methods (createSpendPolicy,listSpendPolicies,updateSpendPolicy,deleteSpendPolicy). - wallet-react: Added
sendEmailOtp()andverifyEmailOtp()methods for passwordless login in the React widget. - OpenAPI spec: Documented all new endpoints (email OTP, OAuth2 authorization/token/userinfo, spend policies).
- Docs: 2-minute embedded wallets quickstart guide at
docs/guides/embedded-wallets-quickstart. - Changed: OIDC discovery (
/.well-known/openid-configuration) now advertisesauthorization_endpoint,userinfo_endpoint, and PKCE support (code_challenge_methods_supported: ["S256"]).
Bankr Dynamic Key Vending (Secret Engine)
- New: First-class "dynamic secrets" engine for Bankr. Store a long-lived partner key (
bk_ptr_) in the secure zone; programmatically issue/revoke short-livedbk_usr_wallet API keys for agents — scoped, TTL-bound, and automatically cleaned up. - Endpoints:
POST /v1/agents/{id}/bankr-keys/lease,GET /v1/agents/{id}/bankr-keys,DELETE /v1/agents/{id}/bankr-keys/{lease_id}. - Lifecycle: Leases auto-revoke on agent deletion/deactivation. Nightly sweep cleans expired leases via Bankr DELETE.
- Shroud integration: When
X-Shroud-Provider: bankr, Shroud auto-resolves the latest leased key for the agent. Falls back to staticproviders/bankr/api-key. - SDK:
client.agents.leaseBankrKey(),.listBankrKeys(),.revokeBankrKey(). - MCP:
lease_bankr_keytool. - CLI:
1claw agent bankr-key lease|list|revoke. - Dashboard: Bankr Keys card on agent detail page (lease, list, revoke inline).
- Config:
BANKR_PARTNER_KEY,BANKR_DEFAULT_WALLET_ID,BANKR_DEFAULT_LEASE_TTL_SECS. - Security (v0.32.2): Leasing is deny-by-default — agents require explicit policy on
agents/{id}/bankr/*. Agent lease responses and MCPlease_bankr_keyoutput omitbk_usr_keys (Shroud resolves server-side). Agent default TTL 15 min; recommend 5–15 min with revoke-after-task.
Shroud: Bankr LLM Gateway upstream
- New: Shroud provider
bankr— route agent LLM traffic through Bankr LLM Gateway (https://llm.bankr.bot) withX-Shroud-Provider: bankr. Storebk_keys atproviders/bankr/api-key. Empty model allowlist (Bankr catalog is authoritative). - Docs: Shroud supported models, Shroud guide, Ecosystem.
Security audit fixes — social login, treasury, webhooks, internal ledger (v0.24.1, SDK/OpenAPI 0.31.0)
- Fixed (CRITICAL): Social login Google/Apple tokens now validate OAuth audience and issuer (shared
oauth_tokensmodule). Discord uses server-side authorization code exchange withoauth_redirect_uri(no raw access tokens in production). - Fixed (CRITICAL): Removed email-based auto-linking on social login — existing email returns 409; users must sign in with their existing method first.
- Fixed (HIGH): Internal transfers require account ownership (
from_account.user_id == caller.id). - Fixed (HIGH): Internal transfers support
Idempotency-Keyreplay protection (migration 110). - Fixed (HIGH): Fiat webhooks in production require verified MoonPay signature (unsigned JSON rejected).
- Fixed (HIGH): Agents cannot supply client
users/...signing paths; treasurymode=treasuryonly. - Fixed (HIGH): Webhook
PATCHURL updates run SSRF validation (validate_audience_url). - Fixed (HIGH): Passkey
tx-assert/completevalidates origin; sign-count clone detection; optional tx_digest binding viaX-Passkey-Tx-Digest. - Fixed (MEDIUM): Treasury send sanity cap (10k ETH); proposal
signer_addressmust match registered signer;auto_credit_account_idownership check; internal transfer asset allowlist; ledgertotalis real count. - Changed: Vault 0.24.1.
@1claw/sdk,@1claw/cli,@1claw/mcp,@1claw/openapi-spec0.31.0 (OpenAPI 2.17.0).
CDP parity Phases 2–4: deposits, fiat ramps, social login, internal ledger, embedded wallet (v0.24.0)
- New: Deposit destinations —
POST/GET/PATCH /v1/deposit-destinationsfor unique inbound payment addresses per chain.deposit_destinationsanddeposit_eventstables (migration 106). Webhook eventdeposit_destination.created. - New: Fiat on/off ramps —
POST /v1/fiat/onramp/session(Coinbase Onramp or MoonPay widget URL),POST /v1/fiat/offramp/initiate,POST /v1/fiat/webhooks(partner completion). Config:COINBASE_ONRAMP_APP_ID,MOONPAY_API_KEY,MOONPAY_SECRET_KEY. - New: Social login —
POST /v1/auth/social-login(public) accepts Google/Apple/Discordid_token, verifies JWKS, upserts user, auto-provisions Ethereum treasury wallet on signup. Migration 108 (users.social_provider,users.social_subject). - New: Passkey transaction authorization —
POST /v1/auth/passkeys/tx-assert/beginand.../completereturn a short-livedpasskey_tokenusable asX-Passkey-Tokenon treasury send (alternative toX-Auth-Confirmpassword). - New: Internal accounts & ledger —
POST/GET /v1/internal-accounts,POST /v1/internal-transfers,GET /v1/internal-accounts/{id}/ledger. Double-entry bookkeeping withSELECT FOR UPDATEbalance checks (migration 107). Webhookinternal_transfer.completed. - New:
@1claw/wallet-reactv0.2.0 —<OneclawEmbeddedWallet />with social login UI, Send/Swap/Receive/Buy views, passkey and fiat client methods. - New: SDK resources —
client.depositDestinations,client.internalAccounts,client.fiat. - New: Dashboard hooks —
use-deposit-destinations,use-internal-accounts,use-fiat. - Changed: Vault version bumped to 0.24.0. SDK/CLI/OpenAPI spec bumped to 0.30.0.
CDP parity Phase 1: live webhooks, gasless treasury sends, wallet-react swap (v0.23.0)
- New: Webhook delivery wired end-to-end —
dispatch_event()calls in treasury_wallets, policies, signing_keys, transactions, and treasury_proposals handlers. Background workerprocess_pending_deliveriesruns every 5s. Events:wallet.transfer.sent,wallet.transfer.received,proposal.created/signed/executed/cancelled,agent.transaction.broadcast/signed,signing_key.rotated,policy.created/updated/deleted. - New: Gasless treasury wallet sends —
POST /v1/treasury/wallets/{chain}/sendacceptsgasless: trueto wrap the send as an ERC-4337 UserOperation with Pimlico paymaster sponsorship. Response includesuser_op_hash. RequiresPIMLICO_API_KEY. - New:
@1claw/wallet-reactv0.1.0 — addedswap()client method,SwapParams/SwapResulttypes, swap exposed in context.<OneclawTreasuryWidget />rebuilt with three views: Send, Swap, and Receive. - New: Dashboard treasury
WalletChainCard— inline balance with 30s auto-refresh, Send dialog (with gasless option), Swap dialog per chain. New hooks:useTreasuryWalletBalance,useSendFromWallet,useSwapFromWallet. - Changed: Vault version bumped to 0.23.0.
2026-05
Security audit fixes (v0.22.1, 2026-05-30)
- Fixed (CRITICAL): Treasury signing authorization bypass — agents signing via Intents API in
mode: "treasury"now require an activetreasury_delegationsentry withmodeset todelegatedorboth. Previously, any agent with Intents API enabled could sign using treasury wallet keys without delegation verification. - Fixed (H1): Delegation guardrails enforcement — per-delegation
guardrailsJSONB fields (to_allowlist,max_value_eth,allowed_chains) are now enforced during treasury-mode signing in the Intents API. Previously, delegation guardrails were stored but not checked, allowing agents to bypass spend caps and address restrictions on delegated treasury transactions. - Fixed (H2): Webhook SSRF protection — webhook delivery dispatcher now validates destination URLs via
validate_audience_url()(blocks private CIDRs, cloud metadata,.internalhosts, localhost) and disables HTTP redirect following to prevent SSRF via registered webhook endpoints. - Fixed (H3): Account lockout on treasury send/swap — failed password re-authentication on
POST /v1/treasury/wallets/{chain}/sendandPOST /v1/treasury/wallets/{chain}/swapnow incrementsfailed_login_attemptsand triggers account lockout at 10 failures (matches existing behavior on export). Previously, send/swap brute-force did not trigger lockout. - Fixed (M1): Treasury proposal
sign_proposalauthorization —POST /v1/treasury/{id}/proposals/{pid}/signnow verifies the caller is either a treasury signer or the proposal creator. Previously, any org member could submit signatures. - Fixed (M2): Delegation mode filter for Intents API — only delegations with
modeset todelegatedorbothare accepted for direct signing viaPOST /v1/agents/{id}/transactionswithtreasury_id. Owner-mode-only delegations are rejected (they must propose via the multisig pipeline). - Changed:
@1claw/wallet-reactconverted to a public git submodule (github.com/1clawAI/wallet-react, MIT license). - Changed: Vault version bumped to 0.22.1.
Treasury wallet operations, webhooks, and gasless transactions (v0.22.0)
- New:
GET /v1/treasury/wallets/{chain}/balance— query native token and ERC-20 token balances for a treasury wallet via RPC. Accepts optional?tokens=0x...query param for ERC-20 addresses. - New:
POST /v1/treasury/wallets/{chain}/send— send native token or ERC-20 transfers from a treasury wallet. Human-only, requires password re-authentication viaX-Auth-Confirmheader. Audit-logged astreasury_wallet.send. - New:
POST /v1/treasury/wallets/{chain}/swap— DEX token swaps via 0x aggregator. Human-only withX-Auth-Confirmre-auth. Returns transaction hash and swap details. RequiresZERO_X_API_KEYenv var. - New: Webhook system — register HTTP endpoints to receive real-time event notifications. Full CRUD:
POST /v1/webhooks(create, returns signing secret),GET /v1/webhooks(list),GET /v1/webhooks/{id}(get),PATCH /v1/webhooks/{id}(update),DELETE /v1/webhooks/{id}(delete). 12 event types:secret.created,secret.updated,secret.deleted,secret.accessed,agent.created,agent.deleted,policy.created,policy.updated,policy.deleted,transaction.submitted,transaction.signed,share.created. Deliveries use HMAC-SHA256 signatures (X-1Claw-Signatureheader) with 5 retries and exponential backoff. Database migration 105. - New:
GET /v1/agents/{id}/signing-keys/{chain}/balance— agents can query the native token balance of their signing key address. - New:
gasless: trueflag onPOST /v1/agents/{id}/transactions— enables gas sponsorship via Pimlico paymaster for ERC-4337 smart account transactions. When set, the handler requests sponsorship before signing the UserOperation. - New:
@1claw/wallet-react— embeddable React component package for Platform API apps. Components:<OneclawWalletProvider>,<OneclawTreasuryWidget>. Hooks:useOneclawWallet(). Supports wallet listing, balance display, and send operations. - New:
crypto/dex.rsmodule — 0x DEX aggregator client for swap quotes. - New:
domain/webhook_dispatcher.rs— background webhook delivery with retry logic. - Changed: Vault version bumped to 0.22.0. SDK/CLI/MCP/OpenAPI all bumped to 0.28.0.
API key expiration and platform key rotation (v0.21.2)
- New: All three API key types (
1ck_human,ocv_agent,plt_platform) now support optional expiration viaapi_key_expires_at. Expired keys are rejected at authentication time with 401. - New:
POST /v1/platform/apps/{id}/rotate-key— rotate a platform app's API key with an optional new expiration date. Returns the newplt_key (one-time). - New: Agent create/update accepts
api_key_expires_at(ISO 8601 datetime). Enforced duringPOST /v1/auth/agent-tokenexchange. - New: Platform app create/update accepts
api_key_expires_at. Enforced in auth middleware forplt_Bearer tokens. - New: Dashboard UI —
KeyExpiryPickercomponent on agent create, platform app create, and API keys settings. Agent cards show expiry badges. Platform detail shows key expiration. - New: CLI flags —
--api-key-expires-atonagent create,agent update,platform create,platform update. Newplatform rotate-key <appId>command. - New: MCP tool —
platform_rotate_keywith optionalapi_key_expires_at. - New: Database migration 098 (
agents.api_key_expires_at,platform_apps.api_key_expires_at,platform_apps.api_key_rotated_at). - New:
POST /v1/platform/connections/{id}/reissue-claim— reissue an expired claim URL for an existing connection without re-provisioning resources. - Changed: OpenAPI spec v2.15.0. SDK/CLI/MCP all bumped to 0.27.0.
WebAuthn passkeys, email change, and agent approvals (v0.21.1)
- New: WebAuthn/FIDO2 passkey authentication — passwordless login and passkey management. Server-side P-256 ECDSA verification (
p256crate) with CBOR attestation parsing (ciboriumcrate). - New: Passkey endpoints (public):
POST /v1/auth/passkeys/assert/begin(start login),POST /v1/auth/passkeys/assert/complete(complete login → JWT). - New: Passkey endpoints (authenticated):
POST /v1/auth/passkeys/register/begin,POST /v1/auth/passkeys/register/complete,GET /v1/auth/passkeys(list),DELETE /v1/auth/passkeys/{id}(delete). - New: Dashboard login page "Sign in with passkey" button. Settings → Security page has passkey management (register, list, delete).
- New:
POST /v1/auth/set-password— allows platform-provisioned users (OIDC/Google, no existing password) to set their first password. Enables email/password login alongside existing auth methods. - New: Email change flow —
POST /v1/auth/change-email(sends 6-digit verification code to new email),POST /v1/auth/verify-email-change(completes change). One pending request per user, 15-minute expiry. Dashboard: Account settings email change dialog. - New:
POST /v1/approvals/request— agent-initiated approval requests for policy changes. Directed to the agent's creator (human). Dashboard approval inbox at/approvalsand detail at/approvals/[id]. - New: Auto-execution of approved policy changes — when
POST /v1/approvals/{id}/decideapproves apolicy_changeaction, the policy described in the approvalsummaryis automatically created/updated. - New: Database migration 097 (
email_change_requeststable). - New: Dashboard hooks:
use-approvals.ts(useApprovals, useApproval, useDecideApproval),use-passkeys.ts(usePasskeys, usePasskeySignIn, useRegisterPasskey, useDeletePasskey). - New:
lib/passkeys.ts— WebAuthn browser helpers (base64url encode/decode, credential creation/request options builders, attestation/assertion serialization).
Mobile companion app & approval queue (v0.21.0)
- New: Mobile companion app for iOS and Android (Expo/React Native, beta). Passkey authentication, biometric unlock, and push notifications.
- New: Device registration API —
POST/GET/DELETE /v1/auth/devicesfor mobile device lifecycle, step-up challenge (POST .../challenge), WebAuthn attestation (POST .../attest), and push token registration (POST .../push-token). - New: Approval queue —
GET /v1/approvals(list with status filter),GET /v1/approvals/:id(details),POST /v1/approvals/:id/decide(approve/reject). Risk-tiered step-up authentication: routine actions require biometrics, critical/irreversible actions require passkey attestation. - New: CLI commands —
1claw device list,1claw device revoke,1claw approval list,1claw approval get,1claw approval decide. - New: MCP tools —
list_approvals,get_approvalfor agent visibility into pending approvals. - New: SDK resources —
client.devices(list, revoke),client.approvals(list, get, decide),client.passkeys. - New: OpenAPI spec v2.14.0 — 6 device endpoints, 3 approval endpoints, 11 new schemas, Approvals tag.
- New: Database migrations (092–096):
user_devices,device_challenges,step_up_tokens,user_passkeys,approvalstables. - Changed: Vault version bumped from 0.20.2 to 0.21.0. CLI 0.23.0. MCP 0.24.0. SDK types regenerated.
Security hardening round 3 (v0.20.2, 2026-05-14)
- Fixed (H-NEW-OIDC-SSRF): SSRF via Platform App
oidc_jwks_url—validate_audience_url()wired into platform app create/update and insideresolve_oidc_subject()defense-in-depth. Prevents attacker-controlled JWKS URLs from reaching internal services. - Fixed (H-NEW-DEK-REWRAP-RACE): Nightly DEK re-wrap race condition — added optimistic concurrency guard
WHERE wrapped_dek = $oldto UPDATE; skips onrows_affected == 0to prevent races between concurrent re-wrap and secret-write operations. - Fixed (M-NEW-IPV6-MAPPED): IPv4-mapped IPv6 bypass —
is_private_or_reserved()now checksto_ipv4_mapped(), ULAfc00::/7, and link-localfe80::/10to prevent IPv6 representation bypasses of private CIDR blocklists in audience/URL validation. - Fixed (M-NEW-BUNDLER-OPEN): Bundler proxy unauthenticated —
/api/bundlerroute now requires session cookie + per-IP rate limiting (20/min). - Fixed (M-NEW-DEMO-UNAUTH): Demo vault/intents routes unauthenticated —
/api/demo/vaultand/api/demo/intentsnow require session cookie + per-IP rate limiting (10/min). - Fixed (M-NEW-EXPORT-NO-LOCKOUT): Treasury wallet export no lockout — failed re-auth password now increments
failed_login_attempts, triggers account lockout at 10 failures; successful re-auth resets the counter. - Fixed (M-NEW-SIGNKEY-AGENT-UUID): Signing key path UUID binding —
validate_signing_key_pathnow takescaller_agent_idand enforces UUID match onagents/{uuid}/paths, preventing cross-agent key path traversal. - Fixed (M-NEW-PLT-AUD-DISABLED): Platform audience not enforced —
oidc_audiencecolumn added toplatform_apps(migration 089). When set, enforced during JWT validation inresolve_oidc_subject(). - Fixed (L-NEW-FORWARDED-FOR): All demo/bundler routes now use
x-vercel-forwarded-forinstead ofx-forwarded-forfor reliable IP extraction on Vercel. - Fixed (L-NEW-DEMO-AUTH-WEAK): Accepted risk — any non-empty session cookie passes auth check on demo routes, but combined with rate limiting this is acceptable for demo functionality.
- Changed: Vault version bumped from 0.20.1 to 0.20.2.
Platform API (v0.20.0)
- New: Platform API for developers building applications on top of 1Claw. Platform apps can provision users, vaults, agents, and policies on behalf of their end-users.
- New:
plt_prefixed API keys for platform app authentication. Resolved by auth middleware toCallerIdentitywithprincipal_type: "platform". - New: Bootstrap templates — declarative JSON specs that scaffold vault + agent + policies in a single API call (
POST /v1/platform/connections/{id}/bootstrap). - New: OIDC user provisioning —
POST /v1/platform/users/upsertaccepts asubject_token(JWT verified against the platform app's JWKS) or email to create-or-find end-users. - New: Connected apps management — end-users can view and disconnect platform apps via
GET/DELETE /v1/platform/connected-apps. - New: Claim tokens (
ct_prefix) — one-time 10-minute tokens for end-users to claim bootstrapped resources. - New:
platform_lockedflag on vaults and agents — prevents platform operators from accessing end-user secret values (custody guarantee). - New: Three billing models:
platform_pays(default),user_pays,hybrid. Per-resource payer override viavaults.billed_to_typeandbilled_to_id. - New: Three auth modes:
silent(no user interaction),user_signin(user must sign in),configurable(per-connection). - New: Database tables:
platform_apps,platform_templates,platform_user_connections,platform_user_grants,platform_claim_tokens(migrations 081–085). New columns onvaults,agents,access_policies,users,usage_events(migration 086). - New: Dashboard pages at
/platform— app management, template editor, connected users, bootstrap flow. - New: SDK —
client.platform.createApp(),.upsertUser(),.bootstrapUser(),.listConnectedApps(). - New: Platform audit events (
platform.*actions) with dedicated query endpoint.
Security hardening round 2 (2026-05)
- New: Nonce-based Content Security Policy (CSP) — dashboard uses per-request nonces instead of
'unsafe-inline'for script tags. - New: DEK re-wrap nightly job — automatically re-wraps data encryption keys using the latest KEK version, ensuring old key versions can be safely destroyed.
- Improved: OIDC federation audience URL validation now blocks cloud metadata endpoints (169.254.x.x, link-local) and private CIDR ranges.
- Improved: CORS explicit header allowlist — only documented request headers are accepted; unknown custom headers are rejected.
- Improved: MCP secret cache TTL and rate limiting — secrets fetched via the MCP server are no longer persisted beyond the session; rate limits added to prevent abuse.
- Improved: x402 payment proof cleanup — expired proofs are purged during the nightly credit expiry job.
- Improved: HTTP timeouts on all outbound RPC clients (KMS, Tenderly, chain RPC) to prevent hung connections.
- Improved: Demo Shroud endpoint rate limiting — prevents abuse of the public demo page.
- Improved: Platform handler audit events now include
request_idfor full request tracing. - Fixed: Platform
upsert_usernow enforces org match — prevents cross-org user binding. - Changed: KEK rotation period updated from 90 days to 365 days (NIST SP 800-57). Nightly KMS cleanup job destroys old key versions (keeps 2 most recent).
- Changed: MCP exfiltration protection default changed from
warntoblock.
Signing key auto-resolution and chain mapping (v0.19.2)
- Improved: Default
signing_key_pathnow auto-resolves: if the agent has a per-chain signing key provisioned (viaPOST /v1/agents/:id/signing-keys), the handler usesagents/{id}/chains/{chain}/private_key; otherwise falls back tokeys/{chain}-signer. - Improved: Network names (e.g.
sepolia,base,arbitrum) now map to canonical signing key chains (e.g.ethereum) viasigning_key_chain_for(), so agents only need one Ethereum signing key regardless of which EVM network they transact on. - Improved:
validate_signing_key_pathnow also allowsagents/{id}/chains/*paths (previously restricted tokeys/*,wallets/*,agents/{id}/keys/*). - Improved: Shroud default signing key path is now chain-aware (dynamically resolved to
keys/{chain}-signerinstead of hardcodedkeys/default-signer).
Native multi-chain treasury wallets (v0.19)
- New: HSM-backed treasury wallet generation for human users across 6 chains: Ethereum (secp256k1), Bitcoin (secp256k1), Solana (Ed25519), XRP (Ed25519), Cardano (Ed25519), Tron (secp256k1).
- New:
POST /v1/treasury/wallets/generate— generate wallets for specified chains (or all supported chains). Private keys stored in per-org__treasury-keysvault with auto-configured MPC custody. - New:
GET /v1/treasury/wallets— list all active wallets for the calling user. - New:
GET /v1/treasury/wallets/{chain}— get wallet for a specific chain. - New:
POST /v1/treasury/wallets/{chain}/export— export private key (audit-logged). - New:
POST /v1/treasury/wallets/{chain}/rotate— rotate wallet keypair. - New:
DELETE /v1/treasury/wallets/{chain}— deactivate wallet. - New: MPC custody auto-configured per billing tier: XOR 2-of-2 for Pro/Team, Shamir 2-of-3 multi-HSM for Business/Enterprise.
- New: Dashboard wizard UI with QR codes for public addresses and key export.
- New: SDK —
client.treasury.generateWallets(),.listWallets(),.getWallet(),.exportWallet(),.rotateWallet(),.deactivateWallet(). - New: CLI —
1claw treasury generate,list,get,export,rotate,deactivate. - Changed: Treasury page no longer requires beta access — requires Pro+ subscription.
- Removed: Coinbase CDP embedded wallets replaced by native wallet generation.
Multi-chain signing keys (v0.18)
- New: Per-agent, per-chain signing keys for 6 blockchains: Ethereum (secp256k1), Bitcoin (secp256k1), Solana (Ed25519), XRP (Ed25519), Cardano (Ed25519), Tron (secp256k1).
- New:
POST /v1/agents/{id}/signing-keys— provision an HSM-backed key for a chain. Returns public key and derived address. Private key stored in__agent-keysvault. - New:
POST /v1/agents/{id}/signing-keys/{chain}/rotate— rotate a chain's key (deactivates old version, creates new). - New:
DELETE /v1/agents/{id}/signing-keys/{chain}— deactivate a chain's key. - New: Crypto modules —
bitcoin.rs(secp256k1, P2WPKH bech32),solana.rs(Ed25519, Base58),xrp.rs(Ed25519, Base58Check),cardano.rs(Ed25519, bech32 enterprise),tron.rs(secp256k1, Base58Check). - New: Dashboard — "Signing Keys" card on agent detail page with public keys, addresses, key version, and "Add Key" dialog.
- New: SDK —
client.signingKeys.create(),.list(),.rotate(),.deactivate(). - New: CLI —
1claw agent signing-keys list,create --chain,rotate,delete. - New: MCP tools —
provision_signing_key,list_signing_keys.
Extended signing intents (v0.18)
- New: Unified
POST /v1/agents/{id}/signendpoint supporting three intent types:personal_sign(EIP-191): Sign arbitrary messages. Requiresmessage_signing_enabledon agent.typed_data(EIP-712): Sign structured typed data (e.g. ERC-20 Permit). Enforces domain allowlist and deny-by-default for dangerous types (Permit, Permit2, etc.).transaction: All EIP-2718 types — legacy (type 0), EIP-2930 access list (type 1), EIP-1559 (type 2), EIP-4844 blob (type 3), EIP-7702 (type 4).
- New: Agent guardrail fields —
message_signing_enabled(boolean),eip712_default_policy("deny"/"allow"),eip712_domain_allowlist(JSON array),signing_chains(text array). - New: SDK —
client.agents.sign(agentId, { intent_type, chain, ... }). - New: CLI —
1claw agent sign. - New: MCP tools —
sign_message(EIP-191),sign_typed_data(EIP-712). - New: Multi-chain keys example, EVM signing example, Agentic TX example, Non-EVM keys example.
Scaling & performance (v0.17)
- New: DEK cache — 60s TTL, 1000-entry DashMap, cuts KMS unwrap calls ~80%.
- New: Usage metering batching — in-memory buffer, batch INSERT every 5s/100 events.
- New: Distributed rate limiting — two-layer: in-memory L1 + optional Redis L2.
- New: Shroud nonce manager — DB-backed via Vault's
POST /v1/admin/nonces/reserve. - New: Cron job leader election via
pg_try_advisory_lock. - New: Quota header caching — DashMap 30s TTL per org.
- New: Manifest endpoint ETag/304 +
?since=incremental query. - New: Daily spend partial composite index on
transactionstable.
2026-04
Agent self-enrollment: link-only and approval_url
- Updated:
POST /v1/agents/enroll—human_emailis optional. With email, a pending enrollment is created and Allow/Deny links are sent; the JSON response may includeapproval_urlas a fallback if email is delayed. Name only creates a link-only pending enrollment; the response includesapproval_urlfor the human to open while signed in to approve into their org. - Updated: Database migration allows nullable org/user/email on
pending_agent_enrollmentsfor link-only rows; global cap on link-only pendings viaONECLAW_MAX_LINK_ONLY_PENDING_ENROLLMENTS(default 100). - Updated: CLI
agent enroll—--emailis optional; printsapproval_urlwhen returned. - Docs: Quickstart for agents, Agent self-onboarding, Give an agent access, OpenClaw.
MPC Secret Storage
- New: Multi-Party Computation (MPC) secret storage — split secret DEKs across multiple HSM providers so no single provider holds the complete key. Three custody modes:
2of2_client_custody(XOR split, client holds one share),2of3_multi_hsm(Shamir 2-of-3 across GCP KMS + AWS KMS + Azure Key Vault, fully server-side),2of3_client_custody(Shamir 2-of-3 with client share). - New:
POST /v1/vaults/{id}/mpc— enable MPC on a vault (user-only, Business/Enterprise tiers). - New:
client_sharereturned inSecretCreatedResponsefor client custody modes. Must be stored securely — only returned once. Required viaX-Client-Shareheader on read. - New: Crypto modules —
mpc_provider.rs(orchestrates split/reconstruct),shamir.rs(Shamir secret sharing over GF(256)),xor_split.rs(XOR 2-of-2),hsm_aws.rs(AWS KMS CryptoProvider),hsm_azure.rs(Azure Key Vault CryptoProvider). - New: Database tables
vault_mpc_keksandsecret_dek_shares(migration 063). - New: MPC guide in documentation.
GDPR Data Export
- New:
POST /v1/auth/export-data— authenticated endpoint that returns a JSON archive of the calling user's personal data (profile, org membership, vaults, agents, policies, audit events, shares, billing). For GDPR data portability compliance. - Updated:
DELETE /v1/auth/mealready handles account deletion with cascade cleanup (right-to-erasure). - Updated: Compliance documentation now covers GDPR support.
Security hardening (2026-04-15)
- New: Agent token auto-revocation on policy changes — when an access policy targeting an agent is created, updated, or deleted, all of that agent's active JWTs are automatically revoked via the
agent_active_tokenstable (migration 066). The agent must re-exchange credentials to get a fresh token with updated scopes. Eliminates stale-scope window. - New: KMS key rotation — GCP KMS vault KEKs are now created with a 90-day automatic rotation schedule and
next_rotation_time. Existing ciphertext remains decryptable (KMS retains all versions). - New: KMS CRC32C verification — all
wrap_dek,unwrap_dek, andsignKMS operations now send CRC32C of input data and verify response CRC32C. Detects in-transit corruption or tampering. Addedcrc32candprost-typescrates. - New: Audit insert hardening — migration 067 creates a restricted
vault_appdatabase role (noBYPASSRLS) and aSECURITY DEFINERfunctioninsert_audit_event. DirectINSERTonaudit_eventsis revoked fromvault_app, preventing log fabrication from compromised connections. - Fixed: Shroud user-supplied
blocked_patternscompiled viaRegexBuilderwith 256KiB size limit (ReDoS protection). - Fixed: x402 facilitator verify now passes actual atomic USDC amounts. Settlement moved before broadcast in
submit_transaction.
2026-03
Live demo
- New: Interactive demo page at 1claw.xyz/demo — three panels (Vault secret retrieval, Shroud prompt injection + secret redaction, Intents TEE transaction signing) with preset buttons, no signup required.
Onboarding wizard improvements
- Updated: Agent wizard is now 4 steps: register → save credentials → grant vault access (creates read policy) → connection snippets. Ensures agents don't start with zero access.
- Updated: Vault wizard is now 4 steps: create vault → store secret → grant agent access (creates read policy) → next steps.
- New:
.envimport on vault detail page — paste a.envfile to bulk-create secrets with configurable path prefix.
Google OAuth JWKS
- Updated:
POST /v1/auth/googlenow verifies the Google ID token locally via Google's JWKS (RS256 signature, audience, issuer, expiry). Replaces the previous tokeninfo endpoint call. More reliable (no URL length limits).
SSO (WorkOS)
- New: WorkOS SAML/OIDC SSO —
GET /v1/auth/sso/authorize, callback handler, "Sign in with SSO" button on login page.
Security fixes (2026-03-16 audit)
- Fixed (C-3): Dashboard auth bypass —
PUBLIC_PAGESprefix match for"/"matched all paths. Now uses exact match. - Fixed (C-4): MFA token replay — MFA challenge tokens are now single-use (jti revoked after verification).
- Fixed (C-5): Cross-vault IDOR — agent JWTs with empty
vault_idsno longer grant unrestricted access; vault IDs are derived from access policies. - Fixed (H-19): Ed25519 SPKI DER parsing uses proper ASN.1 validation instead of a heuristic.
- New:
signing_key_pathvalidation restricts Intents API key paths tokeys/*,wallets/*,agents/{id}/keys/*, oragents/{id}/chains/*. - New: Shroud strips sensitive headers (authorization, cookies, IP headers) before forwarding to upstream LLM providers.
x402 marketplace compatibility
- Updated: 402 Payment Required response body now aligns with docs.g402.ai and x402scan:
x402Version,accepts[]withmaxAmountRequired(atomic units),resource(full URL),payTo,maxTimeoutSeconds,asset,description,mimeType. Enables registration on x402 marketplaces. - Updated: On paid routes, x402 middleware runs before auth so unauthenticated requests receive 402 (with payment details) instead of 401. Scanners and buyers can discover and pay without a token.
- New: Optional
x402.asset(DB/API) andX402_ASSETenv — default is Base USDC. Used in 402accepts[].asset. - Updated: SDK
PaymentAcceptand auto-pay logic support the new 402 shape;maxAmountRequired(atomic) with fallback to legacyprice(USD). CustomX402Signerimplementations should usemaxAmountRequiredandasset. - Updated: Dashboard proxy passes discovery paths (
/openapi.json,/.well-known/x402) through without/v1prefix so vault discovery routes are reachable at api.1claw.xyz.
2026-02
Tenderly Transaction Simulation
- New:
POST /v1/agents/:agent_id/transactions/simulate— pre-flight simulation of EVM transactions via Tenderly. Returns balance changes, gas estimates, decoded errors, and a Tenderly dashboard deep-link. No signing or broadcasting occurs. - New:
POST /v1/agents/:agent_id/transactions/simulate-bundle— simulate multiple sequential transactions (e.g. approve + swap). - New:
simulate_firstflag onPOST /v1/agents/:agent_id/transactions— runs a Tenderly simulation before signing. If the simulation reverts, returns HTTP 422 and does not sign. Org admins can enforce this as mandatory via theintents_api.require_simulationsetting. - New: EIP-1559 (Type 2) transaction signing — set
max_fee_per_gasandmax_priority_fee_per_gasinstead of legacygas_price. - New: Automatic nonce resolution via
eth_getTransactionCountRPC whennonceis omitted. - New: Address derivation from private key (secp256k1) — the simulation endpoint resolves the
fromaddress without exposing the key. - New:
simulate_transactionMCP tool andsimulate_firstargument on thesubmit_transactionMCP tool (defaults totrue). - New:
simulateTransaction()andsimulateBundle()methods in the TypeScript SDK. - New: Dashboard Transaction Builder on the agent detail page — simulate, review balance changes, then confirm and send.
- New: Transaction history table on the agent detail page with simulation status badges and tx hash copy.
Transaction replay protection & response hardening
- New:
Idempotency-Keyheader onPOST /v1/agents/:agent_id/transactions— duplicate requests with the same key within 24 hours return the cached response (200) instead of signing and broadcasting again. In-progress duplicates return 409 Conflict. - New: Server-side nonce serialization — when
nonceis omitted, the server atomically reserves the next nonce per agent+chain+address viaSELECT FOR UPDATElocking, preventing nonce collisions between concurrent requests. - New:
signed_txredacted by default — GET transaction endpoints omit the raw signed transaction hex. Pass?include_signed_tx=trueto include it. The initial POST submission always returns it. - New:
transaction_idempotencyandnonce_trackerdatabase tables (migrations 034, 035). - New: Nightly cleanup of expired idempotency keys (>48h) in the existing credit expiry background job.
- Updated: SDK
submitTransaction()auto-generates anIdempotency-Keyheader (UUID). Callers can override viaoptions.idempotencyKey. - Updated: MCP
submit_transactiontool auto-generates anIdempotency-Keyheader. - Updated: OpenAPI spec documents
Idempotency-Keyheader andinclude_signed_txquery parameter.
Admin user management
- New:
DELETE /v1/admin/users/:user_id— platform admins can delete users. Cascades: delete share links created by the user, clearagents.created_by, then delete the user (device_auth_codes and user_api_keys CASCADE in DB). Cannot delete self or the last owner of the platform org. - New:
scripts/cleanup-test-users.sh— removes test users by display name. Auth viaONECLAW_TOKENorADMIN_EMAIL+ADMIN_PASSWORD. Use--dry-runto list only.
Security audit hardening
- New: Per-agent transaction guardrails —
tx_allowed_chains,tx_to_allowlist,tx_max_value_eth,tx_daily_limit_ethenforced before signing. - New: Audit hash chain — each event stores
prev_event_idand SHA-256integrity_hashfor tamper detection. - New: x402 payment replay protection — payment proofs deduplicated via SHA-256 before facilitator verification.
- New: Authorization enforcement on
delete_secret,list_secrets, andlist_versions(policy check, not just org membership). - Improved: CORS defaults to
https://1claw.xyzin production (no more permissiveAnyfallback). - Improved: CSP removes
unsafe-inlineandunsafe-evalfromscript-src. - Improved: Global rate limiting middleware applied to all API routes.
- Improved: Dependency overrides for
minimatch,ajv,honoto address known CVEs.
Dashboard UX — CopyableId
- New: One-click copy for every UUID, path, and identifier across the dashboard. Vault IDs, agent IDs, principal IDs, audit actor/resource IDs, API key prefixes, secret paths, and user/org IDs in the sidebar — all clickable with tooltip confirmation.
Quota exemption for platform admin orgs
- New:
CallerIdentity.quota_exemptflag resolved at authentication time. Platform admin org (and its agents) bypasses all billing checks. Cleaner than per-route overrides — single source of truth in auth middleware.
Policy UI improvements
- New: Vault selector dropdown on Create Access Policy page — pick any vault, not just the one in the URL.
- New: Agent principal picker — select from existing agents or type a custom agent ID.
- New: Edit policy dialog — update permissions, conditions (JSON), and expiry on existing policies.
- New: Delete policy from the policies list page.
Agent integration guide
- New: Agent detail page in the dashboard now includes a tabbed integration guide with copy-paste code snippets for TypeScript SDK, Python, curl, and MCP configuration.
PolyForm Noncommercial License
- All repositories now include the PolyForm Noncommercial License 1.0.0.
Organization migration
- All repositories moved to the 1clawAI GitHub organization.
Email notifications
- New: Transactional emails via Resend for account and security events.
- Welcome email on signup (email/password and Google OAuth).
- Share invite email when a secret is shared by email.
- Share access notification to the creator when a shared secret is accessed.
- Password change confirmation email.
- API key creation notification email.
- Emails are fire-and-forget (non-blocking) and silently skipped when no
RESEND_API_KEYis configured.
Sharing & invite-by-email
- New:
external_emailshare type — share secrets with users who don't have accounts yet. - New: Claim-on-login — pending email shares are automatically claimed when the recipient signs up or logs in.
- New: Share access notifications — creators are emailed each time a shared secret is accessed.
- New:
POST /v1/auth/signup— self-service account registration via email/password.
SDK rewrite (@1claw/sdk v0.2.0)
- New: Full API parity — typed methods for all 42+ REST API endpoints.
- Resource modules:
vault,secrets,access,agents,sharing,auth,apiKeys,billing,audit,org. createClient()factory with auto-authentication (API key or agent credentials).{ data, error, meta }response envelope on every method.- Typed error hierarchy:
AuthError,PaymentRequiredError,NotFoundError,RateLimitError, etc. - x402 auto-payment support with configurable
maxAutoPayUsd. - MCP tool layer:
McpHandlerandgetMcpToolDefinitions()for AI agent frameworks. auth.signup()for programmatic account creation.sharing.create()with email support for invite-by-email.
Examples repository
- New:
examples/basic/— TypeScript scripts for vault CRUD, secrets, billing, signup, and email sharing. - New:
examples/nextjs-agent-secret/— Next.js 14 app with Claude AI agent accessing vault secrets.
MCP server (@1claw/mcp)
- New: MCP server for AI agent access to secrets via the Model Context Protocol.
- 7 tools:
list_secrets,get_secret,put_secret,delete_secret,describe_secret,rotate_and_store,get_env_bundle. - Browsable
vault://secretsresource. - Dual transport: Local stdio mode (Claude Desktop, Cursor) and hosted HTTP streaming mode (
mcp.1claw.xyz). - Per-session authentication in hosted mode — each connection gets its own vault client.
- Auto-deploy to Cloud Run via GitHub Actions.
Billing & usage tracking
- New: Usage tracking middleware records every authenticated API request.
- New: Free tier — 1,000 requests/month per organization.
- New: x402 Payment Required responses when free tier is exhausted, with on-chain payment on Base (EIP-155:8453).
- New: Billing API —
GET /v1/billing/usage(summary) andGET /v1/billing/history(event log). - Unified billing across dashboard, SDK, and MCP — all count against the same quota.
Vault API
- Added
POST /v1/agents/:agent_id/rotate-keyendpoint for agent key rotation. - Added
GET /v1/billing/usageandGET /v1/billing/historyendpoints. - Usage middleware tracks method, endpoint, principal, status code, and price per request.
- x402 middleware enforces free tier limits and returns payment-required responses.
Infrastructure
- Cloud Run deployment for MCP server (
oneclaw-mcp). - Terraform resources for MCP service and domain mapping.
- GitHub Actions workflow for MCP auto-deploy.
- CI pipeline expanded: MCP type check, build, Docker image build and Trivy scan.
Documentation
- New: Full MCP documentation section (overview, setup, tool reference, security, deployment).
- New: Billing & usage guide.
- New: Deploying updates guide.
- Updated intro, MCP integration guide, and changelog.
- Updated
llms.txtandllms-full.txtwith MCP and billing content.
Initial release (2026-02 early)
- Vault API: vaults, secrets (CRUD + versioning), policies, agents, sharing, audit log, org management.
- Human auth: email/password, Google OAuth, personal API keys (
1ck_). - Agent auth: agent API keys (
ocv_) exchanged for short-lived JWTs. - Envelope encryption with Cloud KMS (or SoftHSM for local dev).
- Dashboard: Next.js with full secret management UI.
- TypeScript SDK (
@1claw/sdk). - Docusaurus docs site.
- Terraform infrastructure (Supabase, GCP, Vercel).