Agent: Stability & Limitations
Stability guarantees
aitaem[agent]'s public surface carries the same semver promise as core aitaem, with
one deliberate exception:
| Surface | Stability |
|---|---|
Convenience bot constructors (QueryBot, DefinitionBot) and primitives base classes (Bot, etc.) |
Semver-stable |
| Default tool input/output schemas | Semver-stable |
RunTrace and BotResponse field shapes |
Semver-stable — the eval substrate depends on this contract holding |
| Default prompt content | Public, but not semver-stable — tuning is expected across patch and minor releases |
Don't pin application behavior to the exact wording of a default prompt — a patch release may change it. If you need prompt stability, override it via the primitives layer instead of depending on default content.
A prompt tune is also a cache-warmup reset
Changing the static instruction text (the parts every bot builds once and reuses across turns) invalidates the provider-side prompt cache — a prompt change isn't purely a behavior change, it's also a one-time cache cost the next time each routing lane runs.
Not enabled
The following are intentionally unsupported, not just undocumented:
- Modifying the
ResultStoreentry schema - Removing a default tool by name
- Hot-swapping the LLM runtime away from
pydantic-ai - Persistent state owned by the bot beyond what you explicitly serialize via
dump_history()
Limitations
See Getting Started for the full tenant_id /
multi-tenancy note. In short:
- The agent module never stores credentials, persists history beyond what you
explicitly serialize, manages multi-tenancy or RBAC, or holds connections other than
the
ConnectionManageryou provide. Isolation between tenants is your application's responsibility, not something any constructor parameter grants. - Concurrent
chat()/ask()calls on the same bot instance are unsupported. One call at a time per instance; concurrency belongs at the caller level (one bot instance per active session).