> ## Documentation Index
> Fetch the complete documentation index at: https://docs.terminal3.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

> What's changed in these docs, and what we know about SDK version history so far.

<Note>
  This page currently tracks **documentation** changes we can verify directly, since we don't yet have a confirmed, complete SDK release history to publish. If you need details on a specific past SDK release, ask in the [developer Telegram](https://t.me/terminal3developer) — we'll backfill verified entries here as we confirm them.
</Note>

## Documentation

### 2026-07-06

* Added [Quickstart](/developers/adk/get-started/quickstart) — a single page to get an authenticated call working before touching contract code.
* Filled in the previously-empty [ADK Tour](/developers/adk/overview/adk-tour) and [Member Delegation](/developers/adk/get-started/member-delegation) pages.
* Added this [Changelog](/developers/adk/changelog) and the [SDK & API Reference](/developers/adk/reference) page.
* Fixed a duplicate "Step 4" between the Invoke and Test walkthrough pages.
* Expanded [Common Errors](/developers/adk/tips/common-errors) with generic-HTTP-500 triage guidance and a table of common integration gotchas (tenant DID double-encoding, `baseUrl` handling).
* Added a warning about contract version-shadowing on re-registration to [Register your TEE contract](/developers/adk/get-started/walkthrough/register-contract).

### 2026-09-08

* Renamed "Agent Auth" to [Member Delegation](/developers/adk/get-started/member-delegation) throughout — the underlying vocabulary shift (`agent_auth`→`member_delegation`, `script`→`contract`) is covered in the SDK section below — and moved the page from `overview/` to `get-started/` to match its nav group and URL slug.
* Documented the audit-log CSV export methods (see the SDK section below) and added the [Read your organization's activity log](/developers/adk/tips/get-activity-log) and [Running the code samples in this guide](/developers/adk/tips/running-code-samples) tip pages, plus [Verify the trust anchor](/developers/adk/tips/verify-trust-anchor) and a stateless `invoke()` guide on the Member Delegation page.
* [SDK & API Reference](/developers/adk/reference): added `setEnvironment`'s `sandbox` value, split `tenant.contracts.execute()` from `client.executeAndDecode()` (they're on different objects), filled in `tenant.maps`' `delete`/`entrySet`/`entryGet`/`getStatus` methods, and corrected the `outbox`/`ap2` WIT host interfaces from "coming soon" to "Available" (both are live, CI-tested capabilities).
* Fixed several stale references caught while re-verifying every page against the confirmed `testnet-v1.0.9` release: a duplicated code sample in [Quickstart](/developers/adk/get-started/quickstart), outdated host-interface version numbers in [Write your first TEE contract](/developers/adk/get-started/walkthrough/write-contract), and a broken link left over from the Member Delegation page move.

## SDK

### Delegation vocabulary — already live; the old names are deprecated, not yet removed

Everything that used to be called a *grant* or *agent auth* on the request
surface is now a *delegation*. The two edges are `member_delegation` (a member
delegating their own authority) and `org_delegation` (an organisation granting
authority over its contracts).

**Client methods**

| Deprecated (still works today)     | Current                                                                                                         |
| ---------------------------------- | --------------------------------------------------------------------------------------------------------------- |
| `getAgentAuth`                     | `getMemberDelegation`                                                                                           |
| `updateAgentAuth`                  | `updateMemberDelegation` — the leading `agentDid` argument is gone; the `grantee` now lives on the grant itself |
| `agentAuthUpdate`                  | `memberDelegationUpdate`                                                                                        |
| `revokeAgentAuthForOrg`            | `revokeMemberDelegationForOrg`                                                                                  |
| `OrgDataClient.grantsGet`          | `getDelegation`                                                                                                 |
| `OrgDataClient.setGrants`          | `setDelegation`                                                                                                 |
| `OrgDataClient.deleteGrants`       | `deleteDelegation`                                                                                              |
| `OrgDataClient.removeMemberGrants` | `removeMemberDelegation`                                                                                        |

**Types**

| Deprecated (still works today)                            | Current                                                                                                                   |
| --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| `UserGrant`                                               | `BoundGrant`                                                                                                              |
| `OrgContractGrants` / `isOrgContractGrants`               | `OrgContractDelegation` / `isOrgContractDelegation`                                                                       |
| `SetGrantsInput` / `DeleteGrantsInput` / `GrantsGetInput` | `OrgDelegationSetInput` / `OrgDelegationDeleteInput` / `OrgDelegationGetInput`                                            |
| `RemoveMemberGrantsInput`                                 | `OrgRemoveMemberDelegationInput`                                                                                          |
| `AgentAuthPolicy` and the `delegation/agent-auth` module  | `MemberDelegationDoc`, `parseMemberDelegationDoc`, `mergeGrants`, `mergeDiscoverDids` from `delegation/member-delegation` |

**Raw `execute` callers** — if you build the wire payload yourself rather than
going through a client method, the function names and the body both changed:

| Old                                                                                                  | New                                                                                                    |
| ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
| `agent-auth-update` / `agent-auth-get` / `agent-auth-revoke-org`                                     | `member-delegation-update` / `member-delegation-get` / `member-delegation-revoke-org`                  |
| `org-policy-set-grants` / `org-policy-delete-grants` / `org-grants-get` / `org-remove-member-grants` | `org-delegation-set` / `org-delegation-delete` / `org-delegation-get` / `org-remove-member-delegation` |
| nested `agents[].scripts[]`                                                                          | flat `grants[]`                                                                                        |
| `agent_did` / `user_did`                                                                             | `grantee`                                                                                              |
| `script_name`                                                                                        | `contract_id`                                                                                          |
| flat `valid_from_secs` / `valid_until_secs`                                                          | `window { … }`                                                                                         |

camelCase keys (`agentDid`, `scriptName`, `validFromSecs`) are rejected outright
rather than silently dropped, so a mistyped time-box can no longer be lost on
the wire.

**Verdicts** — `checkDelegation()` returns the node's verdict as received. Grant
kinds are `member_delegation` / `org_delegation` (was `agent_auth` / `user_grant`)
and the deny codes are `member_delegation_not_found` / `_expired` /
`_not_yet_valid` (was `agent_auth_*`).

<Info>
  Hackathon integrations have referenced `@terminal3/t3n-sdk` versions `3.5.2`, `3.9.0`, and `3.11.0` in the wild. We haven't cross-checked these against an official release history yet, so we're not listing per-version changes here until we can confirm them — a placeholder is worse than an honest gap.
</Info>

### Audit log CSV export — confirmed live on testnet (`testnet-v1.0.9`, 2026-08-27)

Three new `T3nClient` methods export your organisation's activity audit log to CSV, built on the existing `getActivityLog` read:

* **`client.startActivityLogExport(opts?)`** takes the same scope/filters as `getActivityLog` and starts a background export, returning an `export_id`. Only one export runs at a time per caller — starting a second while one is in flight is refused.
* **`client.getActivityLogExportStatus(exportId)`** reports `pending` / `ready` / `failed`. Only your own export ids resolve — someone else's reads as absent, not as a permissions error.
* **`client.downloadActivityLogExport(exportId)`** fetches the finished CSV in one response. Stays fetchable until your next export replaces it.
* **`client.exportActivityLog(opts?, poll?)`** is a convenience wrapper: starts the export, polls until ready (default 1s interval, 5 minute timeout, both configurable via `poll`), and returns the file. Use the three calls above directly when a UI needs to own its own polling — e.g. to survive a page reload.

The exported CSV's columns are a fixed wire format: `seq_no`, `timestamp_ms`, `caller_type`, `actor`, `on_behalf_of`, `org`, `contract`, `function`, `outcome`. Notably absent: `roles` (doesn't fit a fixed column) and the per-row `hash` from the JSON read.

<Info>
  `getAuditEvents()` and `getActivityLog()` themselves predate this export feature and were already real, public `T3nClient` methods — they just hadn't been written up here yet. Both are now in the [SDK & API Reference](/developers/adk/reference) table alongside the export methods.
</Info>
