Overview
ZeroPath uses a fine-grained authorization (FGA) system to control access to resources within your organization. Teams group users together and can be assigned to specific repositories, letting you control who sees what.Team Management
Creating Teams
- Navigate to Settings → Teams in the dashboard.
- Click “Create Team”.
- Give the team a name and optional description.
- Add members by email or username.
- Assign repositories the team should have access to.
Team Members
Teams can include:- Users — people with ZeroPath accounts in your organization
- Contributors — code contributors identified from Git blame data (matched by email, name, or VCS username)
Linking Unmatched Contributors
When ZeroPath identifies code contributors that haven’t been matched to a user account, they appear in the Unmatched Contributors panel. From here you can:- Search contributors by name, username, or email to quickly find the person you want to link.
- Search organization members within the assignment dropdown to find the right account.
- Link contributors individually — each contributor can be linked independently without blocking other link operations.
GitHub Access Sync
You can map your GitHub team structure onto your ZeroPath organization’s access-control teams. If your organization has multiple GitHub App installations (for example, one per GitHub organization or GitHub Enterprise Server instance), the sync covers all of them in a single pass so that every GitHub team and direct repository collaborator is represented. There are two ways to sync:- Continuous (auto) sync — enable auto-sync to keep teams in step automatically. When enabled, ZeroPath syncs your GitHub teams on a recurring schedule. You can toggle this on or off from the GitHub Access Sync section in Settings -> Teams.
- One-off sync — click Sync now to run a single sync immediately, without enabling continuous sync. This is useful for a first-time import or a manual refresh.
- Whether continuous sync is currently enabled or disabled.
- The timestamp of the last completed sync, so you can confirm when team data was last refreshed.
- A progress indicator while a sync is in flight.
Direct Repository Collaborators
You can opt in to syncing direct repository collaborators — GitHub users granted access to a repository outside of a team. When enabled, these collaborators are synced alongside team members and appear with a “Direct Repository Access” badge in the unmatched contributors panel. To toggle direct collaborator sync, use the Enable Direct Access / Disable Direct Access button in the GitHub Access Sync section. Enabling it queues an immediate sync. Disabling it removes repository grants that were created from individual GitHub collaborator assignments. After a sync completes, any GitHub collaborators that could not be matched to a ZeroPath user account are surfaced in the Unmatched Contributors panel for manual linking. If a sync encounters an error, a notification is displayed when it finishes so you can investigate and retry.GitHub Sync Permission Mapping
When GitHub access sync runs, each GitHub role (Pull, Triage, Push, Maintain, Admin) is translated into a set of ZeroPath repository permissions. By default, your organization follows ZeroPath’s built-in mapping, which improves over time without requiring any action on your part. If you need more control, click the Permission Mapping button in the GitHub Access Sync section, or navigate to Settings -> Teams -> Permission Mapping:- The permission matrix shows GitHub roles as columns and ZeroPath repository permissions as rows, organized into groups (Repository Access, Issue Triage, Issue Tracker Export, Scans, Patches & Fixes, Repository Settings, Scan Locations, Scan Schedule, Rules & Context, and Destructive & Bypass).
- Click individual checkboxes to grant or revoke a specific permission for a role, or click the group header checkbox to toggle all permissions in that group at once.
- Click Save Mapping to persist your changes. The custom mapping takes effect on the next sync.
GitHub’s roles are strictly nested: a user only receives the permissions of their highest role on a repository. If your custom mapping grants fewer permissions to a higher role than a lower one, a warning is displayed so you can correct the inconsistency.
Default Team Permissions
You can configure baseline permissions that are automatically applied to teams created by GitHub team sync. This is especially useful when enabling access control for the first time, since newly synced teams start with no permissions by default. From Settings → Teams:- Click “Configure Defaults” to open the Default Team Permissions editor.
- Set the baseline permissions you want every new synced team to receive across three categories (see below).
- Click “Save Defaults” to persist your changes.
- Click “Apply to All Teams” to backfill the configured defaults onto all existing teams in your organization. Existing permissions are preserved — defaults are added on top.
Permission Categories
The default permissions editor organizes permissions into three categories, each shown with a summary count of how many defaults are currently selected: Organization Permissions — Controls what synced teams can do at the organization level, grouped into:
Repository Permissions — Default repository permissions grant access across every repository in the organization. For teams created by GitHub team sync, default repository permissions are not automatically applied, because a GitHub-synced team’s repository access is derived from its GitHub repository grants. You can still apply repository defaults manually using “Apply to All Teams” if desired. Groups include:
Team Self-Management — Controls whether teams can manage their own settings and membership by default. Individual permissions include editing the team, adding members, removing members, and deleting the team.
You can toggle entire permission groups at once by clicking the group header, or toggle individual permissions within a group. A Reset button lets you discard unsaved changes and revert to the last saved state.
Permissions
The platform’s navigation adapts to each user’s permissions. Sidebar links — including Scans, Issues, Repositories, Reports, Settings, and configuration pages — are only shown when the user has at least one relevant permission for that section. The Start Scan button is similarly hidden for users who lack the scan-start permission. This keeps the interface focused on the areas each user can actually access. ZeroPath uses role-based permissions at the organization level. Key permission categories include:Repository Access
Teams can be scoped to specific repositories. When assigning repositories to a team, you can search for repositories by name and the list supports pagination, making it easy to find the right repositories even in organizations with a large number of connected repos. When a team is assigned to a repository:- Team members can view scan results and findings for that repository
- Notifications and alerts are routed to the appropriate team
- Git blame attribution links findings to team members who authored the affected code
Tag-Based Repository Access
In addition to selecting individual repositories, you can grant a team access to repositories through tags. When you select a tag, the team receives the configured repository permissions on every repository that belongs to that tag. Access updates automatically as repositories join or leave the tag — there is no need to manually adjust team membership when your repository set changes. To configure tag-based access:- Open a team’s settings and navigate to the Permissions panel.
- Under Repository Access, select Selected repositories.
- In the Tags section, select one or more tags to grant access to all repositories within those tags.
- Save the team’s permissions.
Switching a team’s repository access to All repositories removes any tag-based mappings. A warning is displayed before this change takes effect.
Managing Tag-Based Access via the API
When setting a team’s permissions through the API, you can includetagIds alongside repositoryIds to grant the team access to repositories through tags. The team receives the configured repoPerms on every repository that belongs to each listed tag.
When reading a team’s permissions, the response includes:
tagIds— the tags whose member repositories the team can access.repoAccess— a structured object with amodediscriminant ("universal"or"selected") that makes the team’s access model explicit. In"selected"mode, it includesrepositoryIds(explicit per-repo grants) andtagIds(tag-scoped grants) alongside the grantedperms.
Switching to All repositories (
universalRepoPermissions: true) clears both per-repository and tag-based grants. Conversely, setting universalRepoPermissions: false clears universal grants and applies only the explicitly listed repositoryIds and tagIds.Finding Details
When viewing a finding, ZeroPath displays contextual information to help your team triage effectively:- Exploit steps — a step-by-step breakdown of how the vulnerability could be exploited
- Preconditions — conditions the scanner could not fully verify that may reduce exploitability. Each precondition includes a description and optional supporting evidence you can expand for more context. Preconditions help your team assess real-world risk by highlighting assumptions that must hold for the vulnerability to be exploitable.
- SCA vulnerability and reachability data — for dependency findings, package details and whether the vulnerable code path is reachable from your application
- Exploitation setup — when available, additional context about the conditions required to exploit the vulnerability is shown alongside preconditions, giving your team a more complete picture of real-world risk.
- Security Compass Countermeasures — when a finding was detected by a rule sourced from the Security Compass integration, a Countermeasures panel appears on the issue detail view. It surfaces the SD Elements countermeasures associated with that rule, giving your team the remediation guidance from Security Compass directly alongside the finding.
- Runtime Validation — when a finding has been tested dynamically, a Runtime Validation panel appears inline on the issue. It shows the verdict (e.g. Confirmed, Disconfirmed, or Unable), a timestamp, and a summary of the outcome. You can expand two collapsible sections for deeper detail:
- Validated attack path / Validation path — for confirmed findings, step-by-step reproduction steps with numbered entries; for all tested findings, the sequence of agent actions and observed results.
- Evidence and scope — a narrative summary of the evidence collected, plus the specific targets and roles that were tested. If the issue could not be tested dynamically, this section notes that testability was not possible.