# Anthropic changelog

What changed in each Anthropic simulator release, newest first.

What changed in each Anthropic simulator release, newest first.

## v0.0.5 — 2026-11-06

1. **The page gains an Errors and limits section.** It shows the error envelope and the statuses beyond 400 and 404, that the simulator applies no rate limits, how each list pages and that a retried request runs again.

## v0.0.4 — 2026-11-06

1. **The docs name what is particular to the one workspace and seed a skill by its id.** The limitations say what a workspace holds, and the seeding example names the route that reads the skill back.

## v0.0.3 — 2026-11-05

1. **A slow client no longer holds up the others.** The simulator reads a request's whole body before it starts serving it and sends the answer after, so a client that uploads slowly, or reads a large answer slowly, no longer delays other clients' requests. Answers are unchanged; one larger than 4 MiB still makes other requests wait while it is sent.

2. **An agent's model carries an effort setting only when the model supports effort.** Creating, updating or reading a Managed Agents agent, and starting a session from one, answers `model.effort` as `{"type": "medium"}` only for a model whose catalog entry supports effort, as the real API does. An agent on `claude-haiku-4-5-20251001` answers its model as `id` and `speed` alone.

3. **The call log shows what each call asked for and whether it succeeded.** Each `GET /_rystic/calls` entry now carries `args`, the call's query and body arguments with credentials redacted (long values cut, file contents left out), and `ok`, false for an answer that is not 2xx. A path the simulator does not serve is marked `unknown_route: true`. `?tail=N` returns only the last N calls, and `dropped` counts the calls the log no longer keeps.

4. **The docs are one page, with a page per feature.** The archive ships `README.md` in place of `HOWTO.md` and `SCENARIOS.md`, with the same sections in the same order as every Rystic simulator's page, and `CHANGELOG.md` beside it. Messages and streaming, agent loops, message batches, files, skills and Managed Agents each have their own page under `docs/features/`, and every example on these pages runs as written against a fresh simulator.

5. **The docs page links the admin token section.** The page now sends you to the admin token's section of the shared-simulators page.

6. **Placeholders in the docs show on the site.** A placeholder such as `<id>` in the docs now shows on the site, where it was left out.

7. **The Scenarios table is easier to scan.** Each row says in a line what the scenario is for, and a list below the table says what each scenario holds.

8. **Pro starts with a 14-day trial.** Free has ended, so every simulator is on Pro and Enterprise, and the docs name only those plans.

9. **Limitations is shorter to read.** It opens with the known issues and one sentence counting the rest. The detailed lists follow, and the website folds them behind "Show all limitations".

10. **The page has no Plans section.** The Quickstart names the plans that run the simulator, and the pricing page lists what each plan includes.

11. **The docs read more plainly, and each difference from the Claude API is marked.** Sentences are shorter, and each behavior that differs from the Claude API, such as how a stream arrives or a batch that never finishes by itself, is marked "Differs from the Claude API" where it's described. Rules with several outcomes, such as what a missing key or beta header returns and what `tool_choice` makes a reply hold, are tables. The main page keeps only the simulator's own facts on auth, seeding and reset, and links the shared pages for the rest.

## v0.0.2 — 2026-11-01

1. **Tool calls, streaming and scripted replies: run an agent loop against the twin.** A `tool_choice` that forces a call answers a `tool_use` block whose `input` the tool's `input_schema` accepts, `tool_result` turns are taken back, and tool definitions, `tool_choice` and tool turns are refused with the API's 400 messages. `stream: true` answers the same message as server-sent events, so `messages.stream()` works. A test scripts what the model says turn by turn through `POST /_rystic/replies` or a scenario's `replies`, and a reset replays the script with the same ids and usage.

2. **A scenario that drives an agent loop.** `anthropic_agent_loop` ships a three-reply script for a loop declaring `get_weather` and `search_help`: the model calls each tool, then answers in text, so a loop on `messages.stream()` runs to its end against the twin on the first call and replays identically after a reset.

## v0.0.1 — 2026-10-31

1. **A local Claude API for the code and agents around the model.** The first release of the Anthropic twin: Messages and token counting, models, files, message batches, skills and the Managed Agents beta, answered on `api.anthropic.com`'s paths on one port, from a model validated against the live Claude API. Point Anthropic's Python or TypeScript SDK at it by its base URL alone (`HOWTO.md` shows how) or curl it with any API key, in `x-api-key` or as `Authorization: Bearer`; no Anthropic account is involved, nothing reaches Anthropic and no tokens are billed.

2. **Messages, token counting and models, without a model.** `POST /v1/messages` answers an assistant message with its `id`, `content`, `stop_reason` and `usage` from any model the account's model table lists, and any other model answers 404 `not_found_error`; the reply's text is the twin's own and does not follow the prompt, and it stops at `max_tokens` with `stop_reason: "max_tokens"`. Requests are checked as the API checks them: a missing, empty or unknown `anthropic-version`, a body that is not valid JSON, a missing `model`, `messages` or `max_tokens` and an empty `messages` list each answer 400 with the API's message. `GET /v1/models` lists the API's 14 current models, newest first, each with its capabilities in the API's shape and its token limits, and an alias such as `claude-sonnet-4-5` names its dated model on models get, messages create and `POST /v1/messages/count_tokens`, which answers `input_tokens`.

3. **Files.** `POST /v1/files` takes a multipart upload with an optional `expires_in_seconds`, and files are listed, read and deleted. A file you upload is not downloadable, as on the API: its `/content` answers 400 `file_not_downloadable`, while a scenario's downloadable files answer their bytes.

4. **Message batches.** Create, list, read, cancel and delete batches with their `request_counts`; a cancel ends the batch at once, and an ended batch's results read back as `application/x-jsonl`, one line per `custom_id`. Deleting a batch still in progress answers 400. A batch you create stays `in_progress` until you cancel it, so `anthropic_batch_queue` and `anthropic_batch_archive` ship ended batches with succeeded, errored and expired results to read.

5. **Skills and their versions.** `POST /v1/skills` creates a skill from `files[]` parts with a `SKILL.md` at their root, named by a `display_title` field or the SKILL.md frontmatter `name`; new versions become `latest_version_id`, and skills and versions are listed, read and deleted.

6. **The Managed Agents beta.** Under `anthropic-beta: managed-agents-2026-04-01`: agents are created, read, updated into new versions and archived; environments, sessions, vaults and their credentials and memory stores are created, read, updated, archived and deleted; a session's events are sent and listed and its resources managed; a memory store's memories are written, read and deleted, with each change kept as a memory version. Every route takes the `?beta=true` query parameter the SDKs send. An archived agent or environment leaves its list unless `include_archived=true`. No agent runs: a session records the events you send.

7. **Five accounts to boot straight into.** `anthropic_skill_library` (three skills with six versions), `anthropic_batch_queue` (batches in progress, canceling and ended), `anthropic_batch_archive` (three ended batches), `anthropic_file_vault` (four files, three downloadable) and `anthropic_fresh_workspace` (the model table alone), each listing the API's 14 models and `claude-opus-4-1-20250805`. `--scenario` boots one, `POST /_rystic/scenario` loads one without a restart and `SCENARIOS.md` describes each. Every scenario reads the way the API answers: an instant or URL the API leaves unset reads `null`, and a batch expires 24 hours after it was created. Without a scenario, the twin boots an empty account holding the API's 14 models.

8. **Measured against the live Claude API.** The newest full-suite round, of 2026-10-31 (`20261031T052431Z`), matched 458 of the suite's 476 tests (96.2%), none inconclusive. `HOWTO.md` states the differences this release ships with: `stream: true` answers 501, not server-sent events; most error answers carry a null `request_id`; two different API keys in `x-api-key` and `Authorization: Bearer` are accepted, where the API refuses them; and a request without a key is refused before its path is checked, where on some routes the API checks the path first.

---

Source: https://www.rystic.ai/docs/simulators/anthropic/changelog · Markdown: https://www.rystic.ai/docs/simulators/anthropic/changelog.md
