pypi / cuga
cuga
What changed in cuga 0.3 to 0.4, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-31.
12 breaking16 new APIs and options8 behavior and defaults13 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initcuga 0.421 changes
Breaking changes 4
Policies are isolated per agent, preventing playbooks from applying across agents.
The full CugaAgent graph is removed; use CugaLite or CugaSupervisor instead.
The evolve extra now requires altk-evolve>=1.5.2.
Internal exception details are no longer sent in server responses or exposed through the events layer.
New APIs and options 11
CUGA adds stdio support for the Agent Client Protocol.
CugaLite adds a pre-execute VERIFY gate for mutating code blocks.
A supervisor runtime supports multi-agent work, with an agent registry and composition UI.
Agents can use channels, triggers, and NL→Flow arming.
An experimental management API is added for Evolve memory.
Final answers can be configured with LLM instructions, a deterministic function, or both.
Manual retention controls are available for memory.
The supported container image now includes an experimental Evolve memory workspace.
The CLI adds a command to purge service instances.
WhatsApp is available as a direct channel through the Meta Cloud API.
LLMManager adds the wxo platform for watsonx Orchestrate routing.
Behavior and default changes 3
Embedding batch defaults are lowered so ingestion fits in a 4GB pod.
An explicit environment setting now takes precedence over the RAG profile.
The agent exhausts alternatives before declaring a task impossible.
Fixes and other changes 3
Memory feedback and listings are improved, and CUGA models are reused.
Stops the agent from re-issuing identical rejected API calls.
WatsonX reasoning is preserved.
cuga 0.328 changes
Breaking changes 8
Sub-agent spawning is disabled by default.
ApiRegistry no longer unwraps arguments['params'].
Calling exit() or raising SystemExit ends the block instead of terminating the process.
External trajectory writes are confined to the tracker directory.
Deletion fails rather than reporting success when an ingest would undo it.
Only profiles with a known name are loaded.
Static file routes are confined to their static directory.
Unknown tool arguments are rejected and schema validation errors are surfaced.
New APIs and options 5
Sub-agents can be spawned dynamically at runtime.
Model profiles for reasoning effort are available for OpenAI-compatible endpoints.
Run Receipt provides per-run token and timing visibility.
Shortlisting is pluggable, with cosine and hybrid strategies.
Configurable caps limit tool calls per block, run, and thread.
Behavior and default changes 5
The Assistant_code trajectory step records code rather than content.
Assistant reasoning is propagated and emitted before code or natural-language trajectory steps; fenced code is recorded.
Policy decisions are exposed in invoke results.
The agent falls back to json_mode when an endpoint ignores json_schema.
Direct LangChain tool calls are now recorded in the tracker.
Fixes and other changes 10
Block-local variables are preserved when code execution times out.
Execution callables are normalized so they are always awaitable.
Harmony control tokens are handled when a harmony model is detected.
Deleting a file stops an in-flight ingest of that same file.
Canceling an ingest ends it instead of leaving its filename wedged.
A missing or malformed JSON body returns HTTP 400.
Restart recovery tolerates file tasks that lack a status.
Terminal task writes are serialized so a row cannot report an incorrect status.
Markdown output now honors replace and redact instructions.
Tool names returned by the shortlister are validated, with a retry on validation failure.