Skip to main content

Access Control

Argon provides a layered access control system: teams organize users, roles define broad authority, groups enable bulk permission grants, and ACLs provide fine-grained per-resource permissions with optional expiration.

Teams

A team is the top-level organizational unit. Each Argon deployment typically has one team, though multi-team setups are supported.
  • Every user belongs to exactly one team.
  • Team vaults are shared among members with appropriate permissions.
  • Personal vaults exist outside team scope — only the owner can access them.

Roles

Each team member has a role that determines their broad authority level: Roles are hierarchical. A Manager can do everything a Member and Auditor can do. Roles are assigned per team membership and can be changed by Admins or Owners.

Groups

Groups are collections of users used for bulk permission grants. Instead of granting vault access to 15 users individually, create an “Engineering” group and grant access once.

System Groups

Argon creates one system group automatically:
  • system-admins — Contains all users with Admin or Owner roles. Used internally to gate admin-only operations (SMTP configuration, server settings). Membership is managed automatically when roles change.

Custom Groups

Managers, Admins, and Owners can create custom groups:

ACLs (Access Control Lists)

ACLs are the most granular permission layer. Each ACL entry grants a specific set of permissions on a specific resource to a specific target (user or group).

ACL Structure

Permission Bitmask

Permissions are combined as a bitmask. A user with permissions = 3 (READ | WRITE) can view and edit entries but cannot manage ACLs. A user with permissions = 7 (READ | WRITE | ADMIN) has full control.

ACL Resolution

When a user accesses a resource, Argon resolves their effective permissions:

Expiring Grants

ACLs can have an expires_at timestamp. This is useful for:
  • Temporary contractor access — Grant a contractor READ access to a vault for 30 days.
  • Incident response — Grant an engineer ADMIN access to production credentials for 4 hours during an outage.
  • Compliance — Ensure access reviews happen by forcing re-grants instead of permanent access.
A background job (DeleteExpiredACLs) runs periodically to clean up expired entries.

Invites

New team members are added via invites:

Invite Flow

  1. Admin creates an invite specifying the recipient’s email, role, and initial vault access.
  2. If SMTP is configured and confirmed, Argon emails the invite code to the recipient.
  3. If SMTP is not available (airgapped environment), the admin copies the invite code manually.
  4. The recipient registers using the invite code. Their email is verified against the invite — it cannot be changed.
  5. On registration, the user is added to the team with the specified role and granted access to the specified vaults.

Email Immutability

The email address on an invite is locked at creation time. This prevents:
  • An attacker intercepting an invite code and registering with a different email.
  • A user changing their email during registration to bypass audit attribution.
The email can only be changed through normal profile settings after registration is complete.

Permission Hierarchy Summary