Skip to content
YAADMIN
Download

YAADMIN DOCUMENTATION

Roles and permissions

Exact permission identifiers, effect precedence, scopes and execution enforcement.

VerifiedSource snapshot · 2026-10-02

Three decisions#

  1. Authentication: who are you?
  2. Permission: may you use it?
  3. Approval: may this request proceed?

Authentication creates an identity/session. Role permissions determine access to capabilities. Approval binds authorization to a particular execution and does not create a permanent permission grant.

Roles and the administrator#

Roles and assignments persist in SQLite. The verified system role is ControlHub Administrators; it is synchronized to allow active module permissions and protected against recovery lockout. This is not an unconditional authorization-engine bypass. Safety approvals remain independent.

No other named default role, role hierarchy or wildcard inheritance is verified.

Effect precedence#

EffectMeaning
denyBlocks execution; takes precedence over other applicable effects
require_approvalRaises approval requirements when an execution request can be bound
allowAllows the capability, subject to other runtime policy/ownership checks

Precedence is DENY → REQUIRE_APPROVAL → ALLOW. Inactive users/permissions are denied. Missing assignments use the authorization mode's fallback; the web defaults to enforcing, while the service constructor defaults to permissive.

Scopes and tool checks#

Stored scopes compare normalized type/value against request scopes; any matching stored scope is sufficient. Resolver/provider read permissions can be required in addition to target resolution.

Before-handler and after-handler checks cover discovery, returned execution requests/batches and local-return tools. Denial prevents provider execution. Approved actions recheck current RBAC.

Permission matrix#

PermissionExact toolsResolver kinds
action1.organizations.readaction1.list_organizationsNone declared
action1.endpoints.readaction1.list_endpoints, action1.get_endpoint, action1.get_endpoint_statusmanaged_endpoint, endpoint, computer, windows_endpoint, pc, user, person, employee, worker, endpoint_group, group, endpoint_metadata
action1.software.readaction1.search_software_packages, action1.list_software_packages, action1.get_software_package, action1.list_installed_software, action1.list_endpoint_installed_softwareNone declared
action1.software.deployaction1.deploy_softwareNone declared
action1.software.uninstallaction1.uninstall_softwareNone declared
action1.scripts.readaction1.search_scripts, action1.list_scripts, action1.get_scriptNone declared
action1.scripts.runaction1.run_library_scriptNone declared
action1.powershell.runaction1.run_powershellNone declared
ad.health.readad.healthNone declared
ad.users.readad.search_users, ad.get_user, ad.get_user_groupsad_user
ad.computers.readad.search_computers, ad.get_computerad_computer
ad.groups.readad.search_groups, ad.get_group, ad.get_group_membersad_group
ad.ous.readad.search_ousad_ou
codex.useNo static tool mappingNone declared
codex.managecodex.bootstrapNone declared
files.createfiles.createNone declared
files.uploadNo static tool mappingNone declared
files.readfiles.read, files.query_tableNone declared
files.deleteNo static tool mappingNone declared
mcp.useNo static tool mappingNone declared
onec.schema.readonec.describe_schemaNone declared
onec.query.readonec.queryNone declared
onec.health.readonec.pingonec_infobase, infobase, onec_database
onec.warehouses.readonec.list_warehouseswarehouse, onec_warehouse, location
onec.nomenclature.readonec.find_itemsnomenclature, onec_nomenclature, inventory_item, item
onec.images.readonec.get_item_imagesNone declared
onec.document_text.readonec.search_document_textNone declared
onec.search.readonec.searchNone declared
onec.stock.readonec.get_stock, onec.get_stock_summaryNone declared
onec.movements.readonec.get_movementsNone declared
targets.resolvetargets.resolveNone declared

31 static identifiers. Backend capabilities such as ad.read are not permission identifiers. MCP per-tool permissions are generated dynamically.

Dynamic MCP permissions#

Dynamic identifiers follow mcp.<server_token>.tool.<remote_token>. They are discovered from connected tools, not a permanent built-in list. See MCP tool permissions.

Important boundaries#

Codex has a specific no_applicable_assignment fallback for codex.use; explicit deny/require_approval and no-role denial remain blocked. See Codex before configuring its access.

Implementation reference: 2026-10-02. Labels distinguish verified behavior, partial implementation and architectural intent.

Search documentation

Search stays in your browser.