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 AI ‣ Configuration ‣ Behavior ‣ Capabilities.

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)

  1. Keep global Write disabled.

  2. Create an Odoo group e.g. AI Writers.

  3. Enable Write capability with Restricted to groups = AI Writers.

  4. Add model-level perm_create / perm_write allow rules only for the models in the pilot (Access policy).

  5. Keep write mode confirm or hybrid.

  6. Monitor logs and violations for two weeks before widening.