# What changed in cuga

> 49 changes in cuga 0.3 to 0.4 from its official release notes, upgrade guides and advisories: 12 breaking, 16 new APIs and options. Each one cited. Sources checked 2026-10-31. HTML: https://unstale.sh/pypi/cuga/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## cuga 0.4

### Breaking changes

- Policies are isolated per agent, preventing playbooks from applying across agents. (0.4.0) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.4.0)
- The full CugaAgent graph is removed; use CugaLite or CugaSupervisor instead. (0.4.0) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.4.0)
- The evolve extra now requires altk-evolve>=1.5.2. (0.4.0) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.4.0)
- Internal exception details are no longer sent in server responses or exposed through the events layer. (0.4.0) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.4.0)

### New APIs and options

- CUGA adds stdio support for the Agent Client Protocol. (0.4.0) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.4.0)
- CugaLite adds a pre-execute VERIFY gate for mutating code blocks. (0.4.0) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.4.0)
- A supervisor runtime supports multi-agent work, with an agent registry and composition UI. (0.4.0) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.4.0)
- Agents can use channels, triggers, and NL→Flow arming. (0.4.0) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.4.0)
- An experimental management API is added for Evolve memory. (0.4.0) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.4.0)
- Final answers can be configured with LLM instructions, a deterministic function, or both. (0.4.0) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.4.0)
- Manual retention controls are available for memory. (0.4.0) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.4.0)
- The supported container image now includes an experimental Evolve memory workspace. (0.4.0) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.4.0)
- The CLI adds a command to purge service instances. (0.4.0) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.4.0)
- WhatsApp is available as a direct channel through the Meta Cloud API. (0.4.0) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.4.0)
- LLMManager adds the wxo platform for watsonx Orchestrate routing. (0.4.0) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.4.0)

### Behavior and default changes

- Embedding batch defaults are lowered so ingestion fits in a 4GB pod. (0.4.0) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.4.0)
- An explicit environment setting now takes precedence over the RAG profile. (0.4.0) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.4.0)
- The agent exhausts alternatives before declaring a task impossible. (0.4.0) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.4.0)

### Fixes and other changes

- Memory feedback and listings are improved, and CUGA models are reused. (0.4.2) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.4.2)
- Stops the agent from re-issuing identical rejected API calls. (0.4.0) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.4.0)
- WatsonX reasoning is preserved. (0.4.0) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.4.0)

## cuga 0.3

### Breaking changes

- Sub-agent spawning is disabled by default. (0.3.2) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.3.2)
- ApiRegistry no longer unwraps arguments['params']. (0.3.2) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.3.2)
- Calling exit() or raising SystemExit ends the block instead of terminating the process. (0.3.2) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.3.2)
- External trajectory writes are confined to the tracker directory. (0.3.2) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.3.2)
- Deletion fails rather than reporting success when an ingest would undo it. (0.3.2) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.3.2)
- Only profiles with a known name are loaded. (0.3.2) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.3.2)
- Static file routes are confined to their static directory. (0.3.2) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.3.2)
- Unknown tool arguments are rejected and schema validation errors are surfaced. (0.3.2) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.3.2)

### New APIs and options

- Sub-agents can be spawned dynamically at runtime. (0.3.2) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.3.2)
- Model profiles for reasoning effort are available for OpenAI-compatible endpoints. (0.3.2) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.3.2)
- Run Receipt provides per-run token and timing visibility. (0.3.2) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.3.2)
- Shortlisting is pluggable, with cosine and hybrid strategies. (0.3.2) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.3.2)
- Configurable caps limit tool calls per block, run, and thread. (0.3.2) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.3.2)

### Behavior and default changes

- The Assistant_code trajectory step records code rather than content. (0.3.2) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.3.2)
- Assistant reasoning is propagated and emitted before code or natural-language trajectory steps; fenced code is recorded. (0.3.2) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.3.2)
- Policy decisions are exposed in invoke results. (0.3.2) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.3.2)
- The agent falls back to json_mode when an endpoint ignores json_schema. (0.3.2) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.3.2)
- Direct LangChain tool calls are now recorded in the tracker. (0.3.2) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.3.2)

### Fixes and other changes

- Block-local variables are preserved when code execution times out. (0.3.2) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.3.2)
- Execution callables are normalized so they are always awaitable. (0.3.2) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.3.2)
- Harmony control tokens are handled when a harmony model is detected. (0.3.2) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.3.2)
- Deleting a file stops an in-flight ingest of that same file. (0.3.2) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.3.2)
- Canceling an ingest ends it instead of leaving its filename wedged. (0.3.2) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.3.2)
- A missing or malformed JSON body returns HTTP 400. (0.3.2) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.3.2)
- Restart recovery tolerates file tasks that lack a status. (0.3.2) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.3.2)
- Terminal task writes are serialized so a row cannot report an incorrect status. (0.3.2) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.3.2)
- Markdown output now honors replace and redact instructions. (0.3.2) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.3.2)
- Tool names returned by the shortlister are validated, with a retry on validation failure. (0.3.2) — [release notes](https://github.com/cuga-project/cuga-agent/releases/tag/v0.3.2)
