> ## Documentation Index
> Fetch the complete documentation index at: https://bloodhound.specterops.io/llms.txt
> Use this file to discover all available pages before exploring further.

# GH_RepoRole

> The permission granted to a user or team on a repository (e.g., admin, write, read)

<img noZoom src="https://mintcdn.com/specterops/tTIczgde9H07oLXf/assets/enterprise-AND-community-edition-pill-tag.svg?fit=max&auto=format&n=tTIczgde9H07oLXf&q=85&s=ad49a576589f4d2a8081df77d07fdf56" alt="Applies to BloodHound Enterprise and CE" width="482" height="45" data-path="assets/enterprise-AND-community-edition-pill-tag.svg" />

Represents a repository-level permission role. Each repository has five default roles (Read, Write, Admin, Triage, Maintain) plus any custom repository roles defined at the organization level. Repo roles define what actions a user or team can perform on a specific repository. Default roles form an inheritance hierarchy (Triage -> Read, Maintain -> Write, Admin includes all), and custom roles inherit from one of the base roles.

## Edges

<Note>
  The tables below list edges defined by the GitHub extension only. Additional edges to or from this node may be created by other extensions.
</Note>

### Inbound Edges

| Edge Type                                                            | Source Node Types                                                                                                                                                                                                | Traversable |
| -------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
| [GH\_Contains](/opengraph/extensions/github/edges/gh_contains)       | [GH\_Organization](/opengraph/extensions/github/nodes/gh_organization), [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository), [GH\_Environment](/opengraph/extensions/github/nodes/gh_environment) | ❌           |
| [GH\_HasBaseRole](/opengraph/extensions/github/edges/gh_hasbaserole) | [GH\_OrgRole](/opengraph/extensions/github/nodes/gh_orgrole), [GH\_RepoRole](/opengraph/extensions/github/nodes/gh_reporole)                                                                                     | ✅           |
| [GH\_HasRole](/opengraph/extensions/github/edges/gh_hasrole)         | [GH\_User](/opengraph/extensions/github/nodes/gh_user), [GH\_Team](/opengraph/extensions/github/nodes/gh_team)                                                                                                   | ✅           |

### Outbound Edges

| Edge Type                                                                                                    | Destination Node Types                                                                                                                     | Traversable |
| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ----------- |
| [GH\_AddAssignee](/opengraph/extensions/github/edges/gh_addassignee)                                         | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_AddLabel](/opengraph/extensions/github/edges/gh_addlabel)                                               | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_AdminTo](/opengraph/extensions/github/edges/gh_adminto)                                                 | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_BypassBranchProtection](/opengraph/extensions/github/edges/gh_bypassbranchprotection)                   | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_CanCreateBranch](/opengraph/extensions/github/edges/gh_cancreatebranch)                                 | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ✅           |
| [GH\_CanEditProtection](/opengraph/extensions/github/edges/gh_caneditprotection)                             | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository), [GH\_Branch](/opengraph/extensions/github/nodes/gh_branch)             | ✅           |
| [GH\_CanReadSecretScanningAlert](/opengraph/extensions/github/edges/gh_canreadsecretscanningalert)           | [GH\_SecretScanningAlert](/opengraph/extensions/github/nodes/gh_secretscanningalert)                                                       | ✅           |
| [GH\_CanWriteBranch](/opengraph/extensions/github/edges/gh_canwritebranch)                                   | [GH\_Branch](/opengraph/extensions/github/nodes/gh_branch)                                                                                 | ✅           |
| [GH\_CloseDiscussion](/opengraph/extensions/github/edges/gh_closediscussion)                                 | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_CloseIssue](/opengraph/extensions/github/edges/gh_closeissue)                                           | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_ClosePullRequest](/opengraph/extensions/github/edges/gh_closepullrequest)                               | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_ConvertIssuesToDiscussions](/opengraph/extensions/github/edges/gh_convertissuestodiscussions)           | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_CreateDiscussionCategory](/opengraph/extensions/github/edges/gh_creatediscussioncategory)               | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_CreateSoloMergeQueueEntry](/opengraph/extensions/github/edges/gh_createsolomergequeueentry)             | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_CreateTag](/opengraph/extensions/github/edges/gh_createtag)                                             | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_DeleteAlertsCodeScanning](/opengraph/extensions/github/edges/gh_deletealertscodescanning)               | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_DeleteDiscussion](/opengraph/extensions/github/edges/gh_deletediscussion)                               | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_DeleteDiscussionComment](/opengraph/extensions/github/edges/gh_deletediscussioncomment)                 | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_DeleteIssue](/opengraph/extensions/github/edges/gh_deleteissue)                                         | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_DeleteTag](/opengraph/extensions/github/edges/gh_deletetag)                                             | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_EditCategoryOnDiscussion](/opengraph/extensions/github/edges/gh_editcategoryondiscussion)               | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_EditDiscussionCategory](/opengraph/extensions/github/edges/gh_editdiscussioncategory)                   | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_EditDiscussionComment](/opengraph/extensions/github/edges/gh_editdiscussioncomment)                     | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_EditRepoAnnouncementBanners](/opengraph/extensions/github/edges/gh_editrepoannouncementbanners)         | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_EditRepoCustomPropertiesValues](/opengraph/extensions/github/edges/gh_editrepocustompropertiesvalues)   | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_EditRepoMetadata](/opengraph/extensions/github/edges/gh_editrepometadata)                               | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_EditRepoProtections](/opengraph/extensions/github/edges/gh_editrepoprotections)                         | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_HasBaseRole](/opengraph/extensions/github/edges/gh_hasbaserole)                                         | [GH\_OrgRole](/opengraph/extensions/github/nodes/gh_orgrole), [GH\_RepoRole](/opengraph/extensions/github/nodes/gh_reporole)               | ✅           |
| [GH\_JumpMergeQueue](/opengraph/extensions/github/edges/gh_jumpmergequeue)                                   | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_ManageDeployKeys](/opengraph/extensions/github/edges/gh_managedeploykeys)                               | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_ManageDiscussionBadges](/opengraph/extensions/github/edges/gh_managediscussionbadges)                   | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_ManageRepoSecurityProducts](/opengraph/extensions/github/edges/gh_managereposecurityproducts)           | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_ManageSecurityProducts](/opengraph/extensions/github/edges/gh_managesecurityproducts)                   | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_ManageSettingsMergeTypes](/opengraph/extensions/github/edges/gh_managesettingsmergetypes)               | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_ManageSettingsPages](/opengraph/extensions/github/edges/gh_managesettingspages)                         | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_ManageSettingsProjects](/opengraph/extensions/github/edges/gh_managesettingsprojects)                   | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_ManageSettingsWiki](/opengraph/extensions/github/edges/gh_managesettingswiki)                           | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_ManageTopics](/opengraph/extensions/github/edges/gh_managetopics)                                       | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_ManageWebhooks](/opengraph/extensions/github/edges/gh_managewebhooks)                                   | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_MarkAsDuplicate](/opengraph/extensions/github/edges/gh_markasduplicate)                                 | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_PushProtectedBranch](/opengraph/extensions/github/edges/gh_pushprotectedbranch)                         | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_ReadCodeScanning](/opengraph/extensions/github/edges/gh_readcodescanning)                               | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_ReadRepoContents](/opengraph/extensions/github/edges/gh_readrepocontents)                               | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_RemoveAssignee](/opengraph/extensions/github/edges/gh_removeassignee)                                   | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_RemoveLabel](/opengraph/extensions/github/edges/gh_removelabel)                                         | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_ReopenDiscussion](/opengraph/extensions/github/edges/gh_reopendiscussion)                               | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_ReopenIssue](/opengraph/extensions/github/edges/gh_reopenissue)                                         | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_ReopenPullRequest](/opengraph/extensions/github/edges/gh_reopenpullrequest)                             | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_RequestPrReview](/opengraph/extensions/github/edges/gh_requestprreview)                                 | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_ResolveDependabotAlerts](/opengraph/extensions/github/edges/gh_resolvedependabotalerts)                 | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_RunOrgMigration](/opengraph/extensions/github/edges/gh_runorgmigration)                                 | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_SetInteractionLimits](/opengraph/extensions/github/edges/gh_setinteractionlimits)                       | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_SetIssueType](/opengraph/extensions/github/edges/gh_setissuetype)                                       | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_SetMilestone](/opengraph/extensions/github/edges/gh_setmilestone)                                       | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_SetSocialPreview](/opengraph/extensions/github/edges/gh_setsocialpreview)                               | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_ToggleDiscussionAnswer](/opengraph/extensions/github/edges/gh_togglediscussionanswer)                   | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_ToggleDiscussionCommentMinimize](/opengraph/extensions/github/edges/gh_togglediscussioncommentminimize) | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_ViewDependabotAlerts](/opengraph/extensions/github/edges/gh_viewdependabotalerts)                       | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_ViewSecretScanningAlerts](/opengraph/extensions/github/edges/gh_viewsecretscanningalerts)               | [GH\_Organization](/opengraph/extensions/github/nodes/gh_organization), [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository) | ❌           |
| [GH\_WriteCodeScanning](/opengraph/extensions/github/edges/gh_writecodescanning)                             | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_WriteRepoContents](/opengraph/extensions/github/edges/gh_writerepocontents)                             | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |
| [GH\_WriteRepoPullRequests](/opengraph/extensions/github/edges/gh_writerepopullrequests)                     | [GH\_Repository](/opengraph/extensions/github/nodes/gh_repository)                                                                         | ❌           |

## Properties

| Property Name     | Data Type | Description                                                                                      |
| ----------------- | --------- | ------------------------------------------------------------------------------------------------ |
| objectid          | string    | A deterministic ID derived from the repo node\_id and role name.                                 |
| name              | string    | The fully qualified role name (e.g., `repoName\read`).                                           |
| id                | string    | Same as objectid.                                                                                |
| short\_name       | string    | The short role name (e.g., `read`, `write`, `admin`, `triage`, `maintain`, or custom role name). |
| type              | string    | `default` for built-in roles or `custom` for custom repository roles.                            |
| environment\_name | string    | The name of the environment (GitHub organization).                                               |
| environmentid     | string    | The node\_id of the environment (GitHub organization).                                           |
| repository\_name  | string    | The name of the repository this role belongs to.                                                 |
| repository\_id    | string    | The node\_id of the repository this role belongs to.                                             |

## Diagram

```mermaid theme={null}
flowchart TD
    GH_RepoRole[fa:fa-user-tie GH_RepoRole]
    GH_Repository[fa:fa-box-archive GH_Repository]
    GH_Branch[fa:fa-code-branch GH_Branch]
    GH_BranchProtectionRule[fa:fa-shield GH_BranchProtectionRule]
    GH_User[fa:fa-user GH_User]
    GH_Team[fa:fa-user-group GH_Team]
    GH_OrgRole[fa:fa-user-tie GH_OrgRole]
    GH_SecretScanningAlert[fa:fa-key GH_SecretScanningAlert]


    GH_RepoRole -.->|GH_ReadRepoContents| GH_Repository
    GH_RepoRole -.->|GH_WriteRepoContents| GH_Repository
    GH_RepoRole -.->|GH_AdminTo| GH_Repository
    GH_RepoRole -.->|GH_ViewSecretScanningAlerts| GH_Repository
    GH_RepoRole -.->|GH_BypassBranchProtection| GH_Repository
    GH_RepoRole -.->|GH_EditRepoProtections| GH_Repository
    %% Note: Additional non-traversable permission edges (issue triage, discussions, settings) omitted for readability.
    GH_RepoRole -.->|GH_ReadCodeScanning| GH_Repository
    GH_RepoRole -.->|GH_WriteCodeScanning| GH_Repository
    GH_RepoRole -.->|GH_ViewDependabotAlerts| GH_Repository
    GH_RepoRole -.->|GH_ResolveDependabotAlerts| GH_Repository
    GH_RepoRole -.->|GH_DeleteIssue| GH_Repository
    GH_RepoRole -.->|GH_CreateTag| GH_Repository
    GH_RepoRole -.->|GH_DeleteTag| GH_Repository
    GH_RepoRole -->|GH_HasBaseRole| GH_RepoRole
    GH_RepoRole -->|GH_CanEditProtection| GH_Repository
    GH_RepoRole -->|GH_CanEditProtection| GH_Branch
    GH_RepoRole -->|GH_CanWriteBranch| GH_Branch
    GH_RepoRole -->|GH_CanCreateBranch| GH_Repository
    GH_RepoRole -->|GH_CanReadSecretScanningAlert| GH_SecretScanningAlert
    GH_User -->|GH_HasRole| GH_RepoRole
    GH_Team -->|GH_HasRole| GH_RepoRole
    GH_OrgRole -->|GH_HasBaseRole| GH_RepoRole
```
