Access
Netzo has one access model for people and for AI. An agent acts with the permissions of its credential, never more, and every action records who did it.
Who acts
| Who | Example |
|---|---|
| A person | A buyer approves a purchase order. |
| An AI assistant | Claude reads overdue invoices over MCP. |
| A program | Your e-commerce site creates sales orders. |
Each one acts with a credential, and the credential has a role. Give each agent or program its own credential and its own role, so it gets only what it needs. How to create and send each credential is in Authentication.
Roles and permissions
A role holds permissions. A permission allows one thing (see a table, run an action, see a sensitive field) in one place:
When someone acts, Netzo checks the permission for that action in that place. The answer always names the permission that decided it. Ask before you act:
netzo can salesorders.approve --place sales/acme-mx{ "tool": "can", "arguments": { "action": "salesorders.approve", "place": "sales/acme-mx" } }Full access allows everything, everywhere. The person who creates the organization gets it, and the organization always keeps at least one active user with it.
Some setup records are readable by every member without a permission: users, options, document and label templates, the organization and its modules, exchange rates.
Where a permission applies
A permission line names the levels of the hierarchy it applies to: <table>.<action>@<module>/<scope>.
| Line | Allows |
|---|---|
salesorders.approve@sales/acme-mx | Approve sales orders, in Sales, for the company Acme México |
salesorders.*@sales/* | Every action on sales orders, in Sales, for every company |
*.*@inventory/mty | Everything in Inventory, at the Monterrey site |
*.*@*/* | Full access |
Sensitive fields need their own permission to be seen.
Approvals
Some actions need a second person. A procedure policy (Administration → Access) names the action and the role that may approve it. When someone without that role runs the action, a person or an agent, Netzo creates an approval request instead of applying it. An approver accepts or rejects the request, and only then does the action run. This is how AI proposes, a person approves works for the changes that matter.
Isolation
Every request belongs to exactly one organization, taken from the credential, never from the input. The database enforces it on every row, so one organization never sees another's data, whatever the surface.