Capabilities and tools¶
Capabilities are master switches that decide which classes of tools the model may be offered and which the access gate will execute. They are configured under .
Capability record fields¶
Code — stable technical code (
ask,read,write, …).Name — UI label.
Is enabled — global off switch.
Restricted to groups — empty = all AI users (who pass other checks); otherwise only those Odoo groups.
Optional company scoping.
Important
Disabling a capability hides its tools and makes the gate reject them if the model invents a call. Offering a tool without the capability is not possible through the normal menu; the gate remains authoritative.
Shipped capabilities¶
Tool catalogue (built-in)¶
Ask¶
search_docs— keyword search over models/fields the user may use.get_environment— live version, edition, company, user, optional modules.list_skills/use_skill— skill catalogue and body load.list_allowed_actions— which business actions are allow-listed.memory_search/memory_save/memory_forget/memory_link.present_choices— structured options for the UI.
Read¶
search— domain search + field read (capped limit).read— by explicit ids (fails if too many ids; does not silently trim).read_group— aggregates (measures validated; domains policy-checked).get_fields— schema (required flags; not raw callable domains).
Write / delete¶
create_record/update_record/delete_record— always via gate; may become pending writes.fetch_file_to_field— requires web and write.
Web¶
web_search/web_fetch— subject to domain allow-list and daily caps.
Action¶
call_action— only methods present on Allowed Actions.
Agent capability ceiling¶
On ai.agent, Capabilities further intersects what that agent
may use. An agent with only ask + read cannot execute write tools even
if Write is globally enabled for humans.
For ad-hoc channel runs with scope intersect, the effective capability classes are:
effective = agent.capability_ids ∩ requester.allowed_capabilities
(and global enabled flags / group restrictions)
Scope agent_full uses the agent’s capabilities without intersecting the requester’s capability classes. Data access still uses the agent user’s Odoo ACL + AI policy — not the requester’s record rules. See Agents.
Enabling write safely (pilot pattern)¶
Keep global Write disabled.
Create an Odoo group e.g. AI Writers.
Enable Write capability with Restricted to groups = AI Writers.
Add model-level
perm_create/perm_writeallow rules only for the models in the pilot (Access policy).Keep write mode confirm or hybrid.
Monitor logs and violations for two weeks before widening.