01
Request
The agent proposes. It holds no write rights on any business model.
02
Validate
Archived BOMs, bad quantities and unknown warehouses are refused on arrival.
03
Approve
A person with the right role decides. The requester cannot be the approver.
04
Revalidate
State is re-checked at apply time. Approval is not a licence against stale data.
05
Apply
The document is created under the reviewer's own rights — once, even under concurrent approvals.
06
Audit
The sequence is recorded, reads included, in a log no application group can edit.
M01
Scoped to your ACLs
Odoo's own access control enforces what the agent may touch. It operates as an ordinary user, never above one, and is never given the manufacturing or inventory groups that carry write.
M02
No privilege escalation
The tools hold no path that steps outside the calling user's permissions, and the source is scanned on every test run to keep it that way.
M03
Human approval
Governed write actions never apply on their own. A proposal becomes a real document only when a person turns it into one.
M04
Segregation of duties
Whoever requested a proposal cannot approve it, and the agent identity can never approve anything at all.
M05
Apply-time revalidation
A bill of materials archived between approval and apply produces a clean refusal, not a failed write.
M06
Concurrency protection
Two people approving at the same moment produce one document, not two. The second gets a clear message rather than a database error.
M07
Read activity is logged too
Every tool call is recorded, reads included — because the question an auditor actually asks is what the agent looked at before it suggested that.
M08
Applied under your rights
There is no elevation in the apply path. A reviewer who may not create a manufacturing order by hand does not create one by approving.