openhound-github 0.19.0__tar.gz → 0.20.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (451) hide show
  1. {openhound_github-0.19.0 → openhound_github-0.20.1}/.github/CODE_OF_CONDUCT.md +1 -1
  2. {openhound_github-0.19.0 → openhound_github-0.20.1}/.github/CONTRIBUTING.md +1 -1
  3. {openhound_github-0.19.0 → openhound_github-0.20.1}/.github/GOVERNANCE.md +1 -1
  4. {openhound_github-0.19.0 → openhound_github-0.20.1}/.github/SECURITY.md +1 -1
  5. {openhound_github-0.19.0 → openhound_github-0.20.1}/PKG-INFO +2 -2
  6. {openhound_github-0.19.0 → openhound_github-0.20.1}/README.md +1 -1
  7. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_CanAccess.md +11 -6
  8. openhound_github-0.20.1/descriptions/edges/GH_CanReadSecret.md +25 -0
  9. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_CanUseRunner.md +1 -1
  10. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_Contains.md +25 -22
  11. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_HasSecret.md +4 -1
  12. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_HasVariable.md +4 -1
  13. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_IsEligibleFor.md +4 -1
  14. openhound_github-0.20.1/descriptions/edges/GH_RequestsAccessTo.md +20 -0
  15. openhound_github-0.20.1/descriptions/edges/GH_ScopedTo.md +29 -0
  16. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_AppInstallation.md +5 -3
  17. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_Environment.md +1 -0
  18. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_OrgRole.md +8 -6
  19. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_OrgRunnerGroup.md +3 -1
  20. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_OrgSecret.md +8 -6
  21. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_OrgVariable.md +6 -4
  22. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_Organization.md +2 -0
  23. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_PersonalAccessToken.md +5 -3
  24. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_PersonalAccessTokenRequest.md +5 -3
  25. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_Repository.md +16 -3
  26. openhound_github-0.20.1/descriptions/nodes/GH_Scope.md +52 -0
  27. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/privilege_zone_rules/t0-app-installations-all-repos.json +1 -1
  28. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/privilege_zone_rules/t0-apps-all-repos.json +1 -1
  29. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/privilege_zone_rules/t0-pats-all-repos.json +1 -1
  30. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/repos-vulnerable-to-workflow-secret-exfil.json +1 -1
  31. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/secrets-reachable-by-user.json +1 -1
  32. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/schema.json +81 -19
  33. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/kinds/edges.py +2 -0
  34. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/kinds/nodes.py +1 -0
  35. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/lookup.py +55 -0
  36. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/__init__.py +2 -0
  37. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/app_installation.py +19 -10
  38. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/org_secret.py +47 -106
  39. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/org_variable.py +47 -19
  40. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/personal_access_token.py +20 -1
  41. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/personal_access_token_request.py +20 -1
  42. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/repository.py +52 -2
  43. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/runner.py +33 -2
  44. openhound_github-0.20.1/src/openhound_github/models/scope.py +248 -0
  45. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/resources/organization.py +24 -0
  46. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_lookup.py +44 -0
  47. openhound_github-0.20.1/tests/test_org_secret_models.py +181 -0
  48. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_repository_rulesets.py +4 -0
  49. openhound_github-0.20.1/tests/test_repository_scopes.py +310 -0
  50. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_runner_models.py +50 -13
  51. openhound_github-0.20.1/tests/test_variable_models.py +76 -0
  52. openhound_github-0.19.0/.github/GitHub-COC-Header.png +0 -0
  53. openhound_github-0.19.0/.github/GitHub-CONTRIB-Header.png +0 -0
  54. openhound_github-0.19.0/.github/GitHub-GOV-Header.png +0 -0
  55. openhound_github-0.19.0/.github/GitHub-Header.png +0 -0
  56. openhound_github-0.19.0/.github/GitHub-LIC-Header.png +0 -0
  57. openhound_github-0.19.0/.github/GitHub-SEC-Header.png +0 -0
  58. openhound_github-0.19.0/descriptions/edges/GH_CanReadSecret.md +0 -20
  59. openhound_github-0.19.0/tests/test_org_secret_models.py +0 -112
  60. openhound_github-0.19.0/tests/test_variable_models.py +0 -19
  61. {openhound_github-0.19.0 → openhound_github-0.20.1}/.github/SO-Dark.svg +0 -0
  62. {openhound_github-0.19.0 → openhound_github-0.20.1}/.github/SO-FOSS-Dark.svg +0 -0
  63. {openhound_github-0.19.0 → openhound_github-0.20.1}/.github/SO-FOSS-Light.svg +0 -0
  64. {openhound_github-0.19.0 → openhound_github-0.20.1}/.github/SO-Light.svg +0 -0
  65. {openhound_github-0.19.0 → openhound_github-0.20.1}/.github/workflows/publish.yml +0 -0
  66. {openhound_github-0.19.0 → openhound_github-0.20.1}/.github/workflows/release-on-merge.yml +0 -0
  67. {openhound_github-0.19.0 → openhound_github-0.20.1}/.github/workflows/validate-branch.yml +0 -0
  68. {openhound_github-0.19.0 → openhound_github-0.20.1}/.gitignore +0 -0
  69. {openhound_github-0.19.0 → openhound_github-0.20.1}/.gitmodules +0 -0
  70. {openhound_github-0.19.0 → openhound_github-0.20.1}/.pre-commit-config.yaml +0 -0
  71. {openhound_github-0.19.0 → openhound_github-0.20.1}/LICENSE.md +0 -0
  72. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_AddAssignee.md +0 -0
  73. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_AddCollaborator.md +0 -0
  74. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_AddLabel.md +0 -0
  75. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_AddMember.md +0 -0
  76. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_AddedDeployKey.md +0 -0
  77. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_AdminTo.md +0 -0
  78. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ApprovesDeploymentTo.md +0 -0
  79. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_AssignedTo.md +0 -0
  80. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_AuthorizedForOrganization.md +0 -0
  81. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_BypassBranchProtection.md +0 -0
  82. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_BypassPullRequestAllowances.md +0 -0
  83. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_CallsWorkflow.md +0 -0
  84. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_CanAccessSecret.md +0 -0
  85. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_CanAssumeIdentity.md +0 -0
  86. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_CanCreateBranch.md +0 -0
  87. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_CanCreateEnvironment.md +0 -0
  88. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_CanCreateInternalRepositories.md +0 -0
  89. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_CanCreatePrivateRepositories.md +0 -0
  90. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_CanCreatePublicRepositories.md +0 -0
  91. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_CanCreateRepositories.md +0 -0
  92. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_CanCreateRepositoryWithRunnerAccess.md +0 -0
  93. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_CanDeployToEnvironment.md +0 -0
  94. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_CanEditEnvironment.md +0 -0
  95. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_CanEditProtection.md +0 -0
  96. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_CanInterceptJob.md +0 -0
  97. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_CanPwnRequest.md +0 -0
  98. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_CanReadSecretScanningAlert.md +0 -0
  99. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_CanRequestOIDCTokenFor.md +0 -0
  100. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_CanWriteBranch.md +0 -0
  101. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_CloseDiscussion.md +0 -0
  102. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_CloseIssue.md +0 -0
  103. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ClosePullRequest.md +0 -0
  104. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ConvertIssuesToDiscussions.md +0 -0
  105. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_CreateDiscussionCategory.md +0 -0
  106. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_CreateEnterpriseOrganizations.md +0 -0
  107. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_CreateRepository.md +0 -0
  108. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_CreateSoloMergeQueueEntry.md +0 -0
  109. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_CreateTag.md +0 -0
  110. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_CreateTeam.md +0 -0
  111. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_DeleteAlertsCodeScanning.md +0 -0
  112. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_DeleteDiscussion.md +0 -0
  113. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_DeleteDiscussionComment.md +0 -0
  114. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_DeleteIssue.md +0 -0
  115. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_DeleteTag.md +0 -0
  116. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_DependsOn.md +0 -0
  117. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_DeploysTo.md +0 -0
  118. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_EditCategoryOnDiscussion.md +0 -0
  119. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_EditDiscussionCategory.md +0 -0
  120. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_EditDiscussionComment.md +0 -0
  121. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_EditEnterpriseCustomPropertiesForOrganizations.md +0 -0
  122. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_EditRepoAnnouncementBanners.md +0 -0
  123. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_EditRepoCustomPropertiesValues.md +0 -0
  124. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_EditRepoMetadata.md +0 -0
  125. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_EditRepoProtections.md +0 -0
  126. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_HasBaseRole.md +0 -0
  127. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_HasExternalIdentity.md +0 -0
  128. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_HasMember.md +0 -0
  129. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_HasPersonalAccessToken.md +0 -0
  130. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_HasPersonalAccessTokenRequest.md +0 -0
  131. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_HasRole.md +0 -0
  132. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_HasRunner.md +0 -0
  133. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_HasSamlIdentityProvider.md +0 -0
  134. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_InheritedFrom.md +0 -0
  135. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_InstalledAs.md +0 -0
  136. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_InviteMember.md +0 -0
  137. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_JumpMergeQueue.md +0 -0
  138. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ManageDeployKeys.md +0 -0
  139. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ManageDiscussionBadges.md +0 -0
  140. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ManageEnterpriseAdmins.md +0 -0
  141. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ManageEnterpriseIdentityProvider.md +0 -0
  142. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ManageEnterpriseMembers.md +0 -0
  143. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ManageEnterpriseOrganizationAdmins.md +0 -0
  144. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ManageEnterpriseOrganizations.md +0 -0
  145. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ManageEnterpriseReferrals.md +0 -0
  146. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ManageEnterpriseTeams.md +0 -0
  147. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ManageOrganizationWebhooks.md +0 -0
  148. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ManageRepoSecurityProducts.md +0 -0
  149. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ManageSecurityProducts.md +0 -0
  150. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ManageSettingsMergeTypes.md +0 -0
  151. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ManageSettingsPages.md +0 -0
  152. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ManageSettingsProjects.md +0 -0
  153. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ManageSettingsWiki.md +0 -0
  154. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ManageTopics.md +0 -0
  155. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ManageWebhooks.md +0 -0
  156. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_MapsToUser.md +0 -0
  157. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_MarkAsDuplicate.md +0 -0
  158. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_MatchesEnvironmentPolicy.md +0 -0
  159. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_MemberOf.md +0 -0
  160. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_OrgBypassCodeScanningDismissalRequests.md +0 -0
  161. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_OrgBypassSecretScanningClosureRequests.md +0 -0
  162. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_OrgReviewAndManageSecretScanningBypassRequests.md +0 -0
  163. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_OrgReviewAndManageSecretScanningClosureRequests.md +0 -0
  164. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_Owns.md +0 -0
  165. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ProtectedBy.md +0 -0
  166. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_PushProtectedBranch.md +0 -0
  167. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ReadCodeScanning.md +0 -0
  168. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ReadEnterpriseAuditLog.md +0 -0
  169. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ReadEnterpriseDomainVerification.md +0 -0
  170. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ReadEnterpriseMembers.md +0 -0
  171. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ReadEnterpriseOrgProjects.md +0 -0
  172. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ReadEnterpriseOrganizationAdmin.md +0 -0
  173. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ReadOrganizationActionsUsageMetrics.md +0 -0
  174. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ReadOrganizationCustomOrgRole.md +0 -0
  175. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ReadOrganizationCustomRepoRole.md +0 -0
  176. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ReadRepoContents.md +0 -0
  177. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_RemoveAssignee.md +0 -0
  178. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_RemoveLabel.md +0 -0
  179. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ReopenDiscussion.md +0 -0
  180. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ReopenIssue.md +0 -0
  181. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ReopenPullRequest.md +0 -0
  182. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_RequestPrReview.md +0 -0
  183. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ResolveDependabotAlerts.md +0 -0
  184. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ResolveSecretScanningAlerts.md +0 -0
  185. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_RestrictionsCanPush.md +0 -0
  186. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_RunOrgMigration.md +0 -0
  187. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_RunsOn.md +0 -0
  188. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_SetEnterpriseInteractionLimits.md +0 -0
  189. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_SetInteractionLimits.md +0 -0
  190. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_SetIssueType.md +0 -0
  191. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_SetMilestone.md +0 -0
  192. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_SetSocialPreview.md +0 -0
  193. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_SyncedTo.md +0 -0
  194. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ToggleDiscussionAnswer.md +0 -0
  195. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ToggleDiscussionCommentMinimize.md +0 -0
  196. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_TransferRepository.md +0 -0
  197. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_UsesSecret.md +0 -0
  198. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_UsesVariable.md +0 -0
  199. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ValidToken.md +0 -0
  200. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ViewDependabotAlerts.md +0 -0
  201. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ViewEnterpriseActionsUsageMetrics.md +0 -0
  202. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ViewEnterpriseBilling.md +0 -0
  203. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ViewEnterpriseSecretScanningAlerts.md +0 -0
  204. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_ViewSecretScanningAlerts.md +0 -0
  205. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_WriteCodeScanning.md +0 -0
  206. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_WriteEnterpriseActionsPolicies.md +0 -0
  207. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_WriteEnterpriseBilling.md +0 -0
  208. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_WriteEnterprisePersonalAccessTokenPolicies.md +0 -0
  209. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_WriteEnterpriseSso.md +0 -0
  210. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_WriteEnterpriseTeamMembers.md +0 -0
  211. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_WriteOrganizationActionsSecrets.md +0 -0
  212. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_WriteOrganizationActionsSettings.md +0 -0
  213. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_WriteOrganizationActionsVariables.md +0 -0
  214. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_WriteOrganizationCustomOrgRole.md +0 -0
  215. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_WriteOrganizationCustomRepoRole.md +0 -0
  216. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_WriteOrganizationNetworkConfigurations.md +0 -0
  217. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_WriteRepoContents.md +0 -0
  218. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/edges/GH_WriteRepoPullRequests.md +0 -0
  219. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_App.md +0 -0
  220. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_Branch.md +0 -0
  221. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_BranchProtectionRule.md +0 -0
  222. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_ClassicPersonalAccessToken.md +0 -0
  223. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_DeployKey.md +0 -0
  224. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_Enterprise.md +0 -0
  225. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_EnterpriseManagedUser.md +0 -0
  226. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_EnterpriseRole.md +0 -0
  227. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_EnterpriseRunner.md +0 -0
  228. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_EnterpriseRunnerGroup.md +0 -0
  229. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_EnterpriseTeam.md +0 -0
  230. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_EnvironmentBranchPolicy.md +0 -0
  231. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_EnvironmentSecret.md +0 -0
  232. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_EnvironmentVariable.md +0 -0
  233. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_ExternalIdentity.md +0 -0
  234. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_OrgRunner.md +0 -0
  235. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_RepoRole.md +0 -0
  236. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_RepoRunner.md +0 -0
  237. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_RepoSecret.md +0 -0
  238. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_RepoVariable.md +0 -0
  239. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_Runner.md +0 -0
  240. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_RunnerGroup.md +0 -0
  241. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_SamlIdentityProvider.md +0 -0
  242. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_Secret.md +0 -0
  243. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_SecretScanningAlert.md +0 -0
  244. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_Team.md +0 -0
  245. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_TeamRole.md +0 -0
  246. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_User.md +0 -0
  247. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_Variable.md +0 -0
  248. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_Workflow.md +0 -0
  249. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_WorkflowJob.md +0 -0
  250. {openhound_github-0.19.0 → openhound_github-0.20.1}/descriptions/nodes/GH_WorkflowStep.md +0 -0
  251. {openhound_github-0.19.0 → openhound_github-0.20.1}/docs/og-docs.json +0 -0
  252. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/privilege_zone_rules/t0-all-repo-admin-role.json +0 -0
  253. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/privilege_zone_rules/t0-enterprise-owners-role.json +0 -0
  254. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/privilege_zone_rules/t0-external-identities-owners.json +0 -0
  255. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/privilege_zone_rules/t0-organizations.json +0 -0
  256. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/privilege_zone_rules/t0-owner-users.json +0 -0
  257. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/privilege_zone_rules/t0-owners-role.json +0 -0
  258. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/privilege_zone_rules/t0-privilege-escalation-roles.json +0 -0
  259. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/privilege_zone_rules/t0-privilege-escalation-users.json +0 -0
  260. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/privilege_zone_rules/t0-saml-identity-providers.json +0 -0
  261. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/README.md +0 -0
  262. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/actions-sha-pinning-not-required.json +0 -0
  263. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/active-leaked-secrets.json +0 -0
  264. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/advanced-security-disabled-new-repos.json +0 -0
  265. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/all-actions-allowed.json +0 -0
  266. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/app-installations-all-repos.json +0 -0
  267. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/branch-protection-admins-not-enforced.json +0 -0
  268. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/branch-protection-deletions-allowed.json +0 -0
  269. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/branch-protection-force-pushes.json +0 -0
  270. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/branch-protection-no-code-owner-reviews.json +0 -0
  271. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/branch-protection-no-pr-reviews.json +0 -0
  272. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/branch-protection-no-status-checks.json +0 -0
  273. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/branch-protection-self-approval.json +0 -0
  274. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/branch-protection-stale-reviews.json +0 -0
  275. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/bypass-pr-requirements.json +0 -0
  276. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/dangerous-branch-perms.json +0 -0
  277. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/default-repository-permissions.json +0 -0
  278. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/demo-sso-to-cloud-round-trip.json +0 -0
  279. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/dependabot-alerts-disabled-new-repos.json +0 -0
  280. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/dependabot-updates-disabled-new-repos.json +0 -0
  281. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/dependency-graph-disabled-new-repos.json +0 -0
  282. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/environments-admin-bypass.json +0 -0
  283. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/expired-pats.json +0 -0
  284. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/external-identities-without-scim.json +0 -0
  285. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/github-to-azure-identity.json +0 -0
  286. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/global-repo-perms.json +0 -0
  287. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/hybrid-identities.json +0 -0
  288. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/members-can-change-repo-visibility.json +0 -0
  289. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/members-can-create-pages.json +0 -0
  290. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/members-can-create-public-repos.json +0 -0
  291. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/members-can-delete-repos.json +0 -0
  292. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/members-can-fork-private-repos.json +0 -0
  293. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/members-can-invite-outside-collaborators.json +0 -0
  294. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/org-owners.json +0 -0
  295. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/orgs-without-2fa.json +0 -0
  296. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/pats-all-repo-access.json +0 -0
  297. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/pending-pat-requests.json +0 -0
  298. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/private-repos-forking-allowed.json +0 -0
  299. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/privileged-custom-org-roles.json +0 -0
  300. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/privileged-hybrid-identities.json +0 -0
  301. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/public-repos.json +0 -0
  302. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/push-protection-disabled-new-repos.json +0 -0
  303. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/push-to-protected-branches.json +0 -0
  304. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/repos-secret-scanning-disabled.json +0 -0
  305. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/repository-workflows.json +0 -0
  306. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/saml-configuration.json +0 -0
  307. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/secret-scanning-alerts.json +0 -0
  308. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/secret-scanning-disabled-new-repos.json +0 -0
  309. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/self-hosted-runners-can-intercept-broad-token-jobs.json +0 -0
  310. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/shared-self-hosted-runners-can-intercept-secret-bearing-jobs.json +0 -0
  311. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/team-membership-admin.json +0 -0
  312. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/team-structure.json +0 -0
  313. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/unprotected-branches.json +0 -0
  314. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/unprotected-default-branch-with-workflow.json +0 -0
  315. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/unprotected-default-branches.json +0 -0
  316. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/web-commit-signoff-not-required.json +0 -0
  317. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/workflow-jobs-interceptable-by-self-hosted-runners.json +0 -0
  318. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/workflow-jobs-with-broad-token-write-permissions.json +0 -0
  319. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/workflow-jobs-with-id-token-write-on-self-hosted-runners.json +0 -0
  320. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/workflow-jobs-with-id-token-write.json +0 -0
  321. {openhound_github-0.19.0 → openhound_github-0.20.1}/extension/saved_searches/workflow-jobs-with-observed-oidc-auth-steps.json +0 -0
  322. {openhound_github-0.19.0 → openhound_github-0.20.1}/justfile +0 -0
  323. {openhound_github-0.19.0 → openhound_github-0.20.1}/pyproject.toml +0 -0
  324. {openhound_github-0.19.0 → openhound_github-0.20.1}/scripts/generate_gh_description_docs.py +0 -0
  325. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/main.py +0 -0
  326. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/__init__.py +0 -0
  327. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/auth.py +0 -0
  328. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/extension.yaml +0 -0
  329. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/github_rest_client.py +0 -0
  330. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/github_retry.py +0 -0
  331. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/graph.py +0 -0
  332. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/graphql.py +0 -0
  333. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/helpers.py +0 -0
  334. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/main.py +0 -0
  335. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/actions_permission.py +0 -0
  336. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/branch.py +0 -0
  337. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/branch_pr_bypass_allowance.py +0 -0
  338. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/branch_protection_rule.py +0 -0
  339. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/branch_push_allowance.py +0 -0
  340. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/classic_personal_access_token.py +0 -0
  341. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/deploy_key.py +0 -0
  342. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/enterprise.py +0 -0
  343. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/enterprise_admin.py +0 -0
  344. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/enterprise_helpers.py +0 -0
  345. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/enterprise_managed_user.py +0 -0
  346. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/enterprise_member.py +0 -0
  347. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/enterprise_organization.py +0 -0
  348. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/enterprise_role.py +0 -0
  349. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/enterprise_role_team.py +0 -0
  350. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/enterprise_role_user.py +0 -0
  351. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/enterprise_team.py +0 -0
  352. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/enterprise_team_member.py +0 -0
  353. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/enterprise_team_organization.py +0 -0
  354. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/enterprise_team_role.py +0 -0
  355. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/enterprise_user.py +0 -0
  356. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/env_secret.py +0 -0
  357. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/env_variable.py +0 -0
  358. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/environment.py +0 -0
  359. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/environment_branch_policy.py +0 -0
  360. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/external_identity.py +0 -0
  361. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/org.py +0 -0
  362. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/org_role.py +0 -0
  363. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/org_role_member.py +0 -0
  364. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/org_role_team.py +0 -0
  365. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/permissions.py +0 -0
  366. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/personal_access_token_access.py +0 -0
  367. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/projected_enterprise_team.py +0 -0
  368. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/repo_role_assignment.py +0 -0
  369. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/repository_role.py +0 -0
  370. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/repository_secret.py +0 -0
  371. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/repository_variable.py +0 -0
  372. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/saml_assertion_consumer_service.py +0 -0
  373. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/saml_helpers.py +0 -0
  374. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/saml_issuer.py +0 -0
  375. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/saml_provider.py +0 -0
  376. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/saml_service_provider.py +0 -0
  377. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/scim_user.py +0 -0
  378. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/secret_scanning_alert.py +0 -0
  379. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/team.py +0 -0
  380. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/team_member.py +0 -0
  381. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/team_role.py +0 -0
  382. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/user.py +0 -0
  383. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/workflow.py +0 -0
  384. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/workflow_job.py +0 -0
  385. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/workflow_reference.py +0 -0
  386. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/models/workflow_step.py +0 -0
  387. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/resources/__init__.py +0 -0
  388. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/resources/enterprise.py +0 -0
  389. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/runner_ids.py +0 -0
  390. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/source.py +0 -0
  391. {openhound_github-0.19.0 → openhound_github-0.20.1}/src/openhound_github/transforms.py +0 -0
  392. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_app_auth.py +0 -0
  393. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_app_installation_repo_access.py +0 -0
  394. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_branch_collection_gate.py +0 -0
  395. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_branch_protection_traversability.py +0 -0
  396. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_classic_personal_access_tokens.py +0 -0
  397. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_credential_permission_models.py +0 -0
  398. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_data/api/actions-permissions.json +0 -0
  399. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_data/api/actionsecrets.json +0 -0
  400. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_data/api/app.json +0 -0
  401. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_data/api/appinstalls.json +0 -0
  402. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_data/api/branch-policies.json +0 -0
  403. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_data/api/branch-prot-rules.json +0 -0
  404. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_data/api/branches.json +0 -0
  405. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_data/api/custom-roles.json +0 -0
  406. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_data/api/environments.json +0 -0
  407. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_data/api/org-pat-request.json +0 -0
  408. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_data/api/org-pat.json +0 -0
  409. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_data/api/org-role-teams.json +0 -0
  410. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_data/api/org-role-users.json +0 -0
  411. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_data/api/org-roles.json +0 -0
  412. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_data/api/org.json +0 -0
  413. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_data/api/pat-repositories.json +0 -0
  414. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_data/api/repo-collaborators.json +0 -0
  415. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_data/api/repo-teams.json +0 -0
  416. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_data/api/repositories.json +0 -0
  417. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_data/api/scimusers.json +0 -0
  418. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_data/api/secrets.json +0 -0
  419. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_data/api/secretscanningalert.json +0 -0
  420. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_data/api/selected-org-secrets.json +0 -0
  421. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_data/api/variables.json +0 -0
  422. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_data/api/workflows.json +0 -0
  423. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_deploy_key_models.py +0 -0
  424. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_deploy_key_resources.py +0 -0
  425. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_description_docs.py +0 -0
  426. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_enterprise_capabilities.py +0 -0
  427. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_enterprise_organization.py +0 -0
  428. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_enterprise_resources.py +0 -0
  429. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_environment_model.py +0 -0
  430. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_environment_resources.py +0 -0
  431. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_environment_reviewer_lookup.py +0 -0
  432. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_error_resilience.py +0 -0
  433. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_github_app_retry.py +0 -0
  434. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_github_rest_client.py +0 -0
  435. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_github_retry.py +0 -0
  436. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_helpers.py +0 -0
  437. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_org_role_model.py +0 -0
  438. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_org_scim_resources.py +0 -0
  439. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_preproc.py +0 -0
  440. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_runner_ids.py +0 -0
  441. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_runner_resources.py +0 -0
  442. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_saml_helpers.py +0 -0
  443. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_saml_models.py +0 -0
  444. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_scim_models.py +0 -0
  445. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_source_endpoints.py +0 -0
  446. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_source_org_canonicalization.py +0 -0
  447. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_team_external_groups.py +0 -0
  448. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_workflow_interception_path.py +0 -0
  449. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_workflow_model.py +0 -0
  450. {openhound_github-0.19.0 → openhound_github-0.20.1}/tests/test_workflow_resources.py +0 -0
  451. {openhound_github-0.19.0 → openhound_github-0.20.1}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  <p align="center">
2
2
  <a href="https://community.specterops.io/" target="_blank">
3
- <img alt="Community of SpecterOps - Creators of BloodHound" src=".github/GitHub-COC-Header.png" width="100%" style="max-width: 100%;">
3
+ <img alt="Community of SpecterOps - Creators of BloodHound" src="https://raw.githubusercontent.com/SpecterOps/OpenHound/refs/heads/main/.github/GitHub-COC-Header.png" width="100%" style="max-width: 100%;">
4
4
  </a>
5
5
  </p>
6
6
 
@@ -1,6 +1,6 @@
1
1
  <p align="center">
2
2
  <a href="https://community.specterops.io/" target="_blank">
3
- <img alt="Community of SpecterOps - Creators of BloodHound" src=".github/GitHub-CONTRIB-Header.png" width="100%" style="max-width: 100%;">
3
+ <img alt="Community of SpecterOps - Creators of BloodHound" src="https://raw.githubusercontent.com/SpecterOps/OpenHound/refs/heads/main/.github/GitHub-CONTRIB-Header.png" width="100%" style="max-width: 100%;">
4
4
  </a>
5
5
  </p>
6
6
 
@@ -1,6 +1,6 @@
1
1
  <p align="center">
2
2
  <a href="https://community.specterops.io/" target="_blank">
3
- <img alt="Community of SpecterOps - Creators of BloodHound" src=".github/GitHub-GOV-Header.png" width="100%" style="max-width: 100%;">
3
+ <img alt="Community of SpecterOps - Creators of BloodHound" src="https://raw.githubusercontent.com/SpecterOps/OpenHound/refs/heads/main/.github/GitHub-GOV-Header.png" width="100%" style="max-width: 100%;">
4
4
  </a>
5
5
  </p>
6
6
 
@@ -1,6 +1,6 @@
1
1
  <p align="center">
2
2
  <a href="https://specterops.io/" target="_blank">
3
- <img alt="Community of SpecterOps - Creators of BloodHound" src=".github/GitHub-SEC-Header.png" width="100%" style="max-width: 100%;">
3
+ <img alt="Community of SpecterOps - Creators of BloodHound" src="https://raw.githubusercontent.com/SpecterOps/OpenHound/refs/heads/main/.github/GitHub-SEC-Header.png" width="100%" style="max-width: 100%;">
4
4
  </a>
5
5
  </p>
6
6
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: openhound-github
3
- Version: 0.19.0
3
+ Version: 0.20.1
4
4
  Summary: Github collector for OpenHound
5
5
  Author-email: "jdreijer@specterops.io" <jdreijer@specterops.io>, Jared Atkinson <jatkinson@specterops.io>
6
6
  License-File: LICENSE.md
@@ -11,7 +11,7 @@ Description-Content-Type: text/markdown
11
11
 
12
12
  <p align="center">
13
13
  <a href="https://specterops.io" target="_blank">
14
- <img alt="A project powered by SpecterOps - Creators of BloodHound" src=".github/GitHub-Header.png" width="100%" style="max-width: 100%;">
14
+ <img alt="A project powered by SpecterOps - Creators of BloodHound" src="https://raw.githubusercontent.com/SpecterOps/OpenHound/refs/heads/main/.github/GitHub-Header.png" width="100%" style="max-width: 100%;">
15
15
  </a>
16
16
  </p>
17
17
 
@@ -1,6 +1,6 @@
1
1
  <p align="center">
2
2
  <a href="https://specterops.io" target="_blank">
3
- <img alt="A project powered by SpecterOps - Creators of BloodHound" src=".github/GitHub-Header.png" width="100%" style="max-width: 100%;">
3
+ <img alt="A project powered by SpecterOps - Creators of BloodHound" src="https://raw.githubusercontent.com/SpecterOps/OpenHound/refs/heads/main/.github/GitHub-Header.png" width="100%" style="max-width: 100%;">
4
4
  </a>
5
5
  </p>
6
6
 
@@ -2,16 +2,18 @@
2
2
 
3
3
  ## General Information
4
4
 
5
- The non-traversable GH_CanAccess edge indicates that a personal access token, app installation, or deploy key has been granted access to a repository or organization. This edge represents the scope of access granted to a non-human credential rather than a direct attack path, providing visibility into which repositories are reachable through that credential. It is non-traversable because credential access does not transitively extend to other principals.
5
+ The non-traversable GH_CanAccess edge indicates that a personal access token, app installation, or deploy key has been granted access to a repository, reusable scope, or organization. All-repository app installations and PATs point to an organization-scoped GH_Scope with `scope_type=repository` instead of repeating an edge to every repository. This edge represents access scope rather than a direct attack path.
6
6
 
7
7
  ## Edge Schema
8
8
 
9
9
  | Source | Destination | Traversable |
10
10
  | --- | --- | --- |
11
11
  | `GH_AppInstallation` | `GH_Repository` | `false` |
12
+ | `GH_AppInstallation` | `GH_Scope` | `false` |
12
13
  | `GH_DeployKey` | `GH_Repository` | `false` |
13
14
  | `GH_PersonalAccessToken` | `GH_Organization` | `false` |
14
15
  | `GH_PersonalAccessToken` | `GH_Repository` | `false` |
16
+ | `GH_PersonalAccessToken` | `GH_Scope` | `false` |
15
17
 
16
18
  ## Diagram
17
19
 
@@ -19,11 +21,14 @@ The non-traversable GH_CanAccess edge indicates that a personal access token, ap
19
21
  graph LR
20
22
  n0["GH_AppInstallation"]
21
23
  n1["GH_Repository"]
22
- n2["GH_DeployKey"]
23
- n3["GH_PersonalAccessToken"]
24
- n4["GH_Organization"]
24
+ n2["GH_Scope"]
25
+ n3["GH_DeployKey"]
26
+ n4["GH_PersonalAccessToken"]
27
+ n5["GH_Organization"]
25
28
  n0 -.->|GH_CanAccess| n1
26
- n2 -.->|GH_CanAccess| n1
27
- n3 -.->|GH_CanAccess| n4
29
+ n0 -.->|GH_CanAccess| n2
28
30
  n3 -.->|GH_CanAccess| n1
31
+ n4 -.->|GH_CanAccess| n5
32
+ n4 -.->|GH_CanAccess| n1
33
+ n4 -.->|GH_CanAccess| n2
29
34
  ```
@@ -0,0 +1,25 @@
1
+ # GH_CanReadSecret
2
+
3
+ ## General Information
4
+
5
+ Org role can read organization secrets by creating a repository in the matching organization-secret scope. The collector emits this relationship from the role to a reusable `GH_Scope`; `GH_ScopedTo` expands the scope to its `all` or `private_or_internal` organization secrets. Selected secrets do not receive this derived capability because creating a repository does not add that repository to an arbitrary selected set.
6
+
7
+ ## Edge Schema
8
+
9
+ | Source | Destination | Traversable |
10
+ | --- | --- | --- |
11
+ | `GH_OrgRole` | `GH_OrgSecret` | `true` |
12
+ | `GH_OrgRole` | `GH_Scope` | `true` |
13
+
14
+ `GH_OrgRole` to `GH_OrgSecret` remains an accepted legacy schema endpoint. Current OpenHound collections emit `GH_OrgRole` to `GH_Scope` instead.
15
+
16
+ ## Diagram
17
+
18
+ ```mermaid
19
+ graph LR
20
+ n0["GH_OrgRole"]
21
+ n1["GH_Scope"]
22
+ n2["GH_OrgSecret"]
23
+ n0 -->|GH_CanReadSecret| n1
24
+ n1 -->|GH_ScopedTo| n2
25
+ ```
@@ -4,7 +4,7 @@
4
4
 
5
5
  For runner-group-backed access, the traversable GH_CanUseRunner edge is a computed edge representing that a repository or branch can dispatch workflows to a self-hosted runner execution surface under the modeled runner-group controls.
6
6
 
7
- The collector derives this edge from GH_IsEligibleFor rather than directly from repository visibility. It emits GH_CanUseRunner only when the repository is within the runner group's repository-access scope, GitHub Actions is enabled for the repository, and `restricted_to_workflows=false` on the organization-facing runner group. Inherited enterprise-backed access also requires `restricted_to_workflows=false` on the source GH_EnterpriseRunnerGroup. Every collected branch in a repository that satisfies those conditions receives the same edge so branch write paths can reach the execution surface.
7
+ The collector derives this edge from the same underlying eligibility policy represented by GH_IsEligibleFor. It emits GH_CanUseRunner only when the repository is within the runner group's repository-access scope, GitHub Actions is enabled for the repository, and `restricted_to_workflows=false` on the organization-facing runner group. Inherited enterprise-backed access also requires `restricted_to_workflows=false` on the source GH_EnterpriseRunnerGroup. Every collected branch in a repository that satisfies those conditions receives the same edge so branch write paths can reach the execution surface.
8
8
 
9
9
  Organization and inherited enterprise-backed access terminate at the organization-facing GH_OrgRunnerGroup, then continue through GH_HasRunner for native organization runners or through GH_InheritedFrom and GH_HasRunner for inherited enterprise runners. Repository-scoped runners currently receive GH_CanUseRunner directly from their containing repository and are not part of this runner-group traversability change.
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## General Information
4
4
 
5
- The non-traversable GH_Contains edge represents structural containment within the GitHub resource hierarchy. The enterprise contains enterprise teams, roles, managed users, classic personal access tokens, runner groups, and enterprise runners through their groups. The organization serves as a top-level container for users, teams, repositories, roles, secrets, app installations, fine-grained personal access tokens, and organization runner groups. Native organization runner groups contain organization runners. Repositories contain branches, workflows, branch protection rules, environments, repo-level secrets and variables, and repository-scoped runners. Environments contain environment branch policies, environment-scoped secrets, and environment-scoped variables. This edge is created by the collector to establish the resource hierarchy and is not traversable because containment alone does not imply privilege escalation.
5
+ The non-traversable GH_Contains edge represents structural containment within the GitHub resource hierarchy. The enterprise contains enterprise teams, roles, managed users, classic personal access tokens, runner groups, and enterprise runners through their groups. The organization serves as a top-level container for users, teams, repositories, roles, scopes, secrets, app installations, fine-grained personal access tokens, and organization runner groups. Native organization runner groups contain organization runners. Repositories contain branches, workflows, branch protection rules, environments, repo-level secrets and variables, and repository-scoped runners. Environments contain environment branch policies, environment-scoped secrets, and environment-scoped variables. This edge is created by the collector to establish the resource hierarchy and is not traversable because containment alone does not imply privilege escalation.
6
6
 
7
7
  ## Edge Schema
8
8
 
@@ -25,6 +25,7 @@ The non-traversable GH_Contains edge represents structural containment within th
25
25
  | `GH_Organization` | `GH_OrgVariable` | `false` |
26
26
  | `GH_Organization` | `GH_PersonalAccessToken` | `false` |
27
27
  | `GH_Organization` | `GH_PersonalAccessTokenRequest` | `false` |
28
+ | `GH_Organization` | `GH_Scope` | `false` |
28
29
  | `GH_Organization` | `GH_SecretScanningAlert` | `false` |
29
30
  | `GH_Repository` | `GH_Branch` | `false` |
30
31
  | `GH_Repository` | `GH_BranchProtectionRule` | `false` |
@@ -61,17 +62,18 @@ graph LR
61
62
  n16["GH_OrgVariable"]
62
63
  n17["GH_PersonalAccessToken"]
63
64
  n18["GH_PersonalAccessTokenRequest"]
64
- n19["GH_SecretScanningAlert"]
65
- n20["GH_Repository"]
66
- n21["GH_Branch"]
67
- n22["GH_BranchProtectionRule"]
68
- n23["GH_DeployKey"]
69
- n24["GH_RepoRunner"]
70
- n25["GH_RepoSecret"]
71
- n26["GH_RepoVariable"]
72
- n27["GH_Workflow"]
73
- n28["GH_WorkflowJob"]
74
- n29["GH_WorkflowStep"]
65
+ n19["GH_Scope"]
66
+ n20["GH_SecretScanningAlert"]
67
+ n21["GH_Repository"]
68
+ n22["GH_Branch"]
69
+ n23["GH_BranchProtectionRule"]
70
+ n24["GH_DeployKey"]
71
+ n25["GH_RepoRunner"]
72
+ n26["GH_RepoSecret"]
73
+ n27["GH_RepoVariable"]
74
+ n28["GH_Workflow"]
75
+ n29["GH_WorkflowJob"]
76
+ n30["GH_WorkflowStep"]
75
77
  n0 -.->|GH_Contains| n1
76
78
  n0 -.->|GH_Contains| n2
77
79
  n0 -.->|GH_Contains| n3
@@ -90,15 +92,16 @@ graph LR
90
92
  n5 -.->|GH_Contains| n17
91
93
  n5 -.->|GH_Contains| n18
92
94
  n5 -.->|GH_Contains| n19
93
- n20 -.->|GH_Contains| n21
94
- n20 -.->|GH_Contains| n22
95
- n20 -.->|GH_Contains| n23
96
- n20 -.->|GH_Contains| n7
97
- n20 -.->|GH_Contains| n24
98
- n20 -.->|GH_Contains| n25
99
- n20 -.->|GH_Contains| n26
100
- n20 -.->|GH_Contains| n19
101
- n20 -.->|GH_Contains| n27
102
- n27 -.->|GH_Contains| n28
95
+ n5 -.->|GH_Contains| n20
96
+ n21 -.->|GH_Contains| n22
97
+ n21 -.->|GH_Contains| n23
98
+ n21 -.->|GH_Contains| n24
99
+ n21 -.->|GH_Contains| n7
100
+ n21 -.->|GH_Contains| n25
101
+ n21 -.->|GH_Contains| n26
102
+ n21 -.->|GH_Contains| n27
103
+ n21 -.->|GH_Contains| n20
104
+ n21 -.->|GH_Contains| n28
103
105
  n28 -.->|GH_Contains| n29
106
+ n29 -.->|GH_Contains| n30
104
107
  ```
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## General Information
4
4
 
5
- The traversable GH_HasSecret edge represents the relationship between a repository or environment and the secrets accessible within that context. This edge shows which secrets are available in which scopes. Repositories can have access to both organization-level secrets (scoped to selected repositories) and repository-level secrets, while environments expose their own environment-scoped secrets to jobs that target them. This edge is traversable because any principal that can execute a workflow in the relevant context may be able to exfiltrate secret values at runtime, making this a meaningful link in attack path analysis.
5
+ The traversable GH_HasSecret edge represents the relationship between a repository or environment and the secrets accessible within that context. Canonical all/private organization-secret availability is factored through a GH_Scope; selected organization secrets and repository/environment secrets remain direct. This edge is traversable because any principal that can execute a workflow in the relevant context may be able to exfiltrate secret values at runtime, making this a meaningful link in attack path analysis.
6
6
 
7
7
  ## Edge Schema
8
8
 
@@ -11,6 +11,7 @@ The traversable GH_HasSecret edge represents the relationship between a reposito
11
11
  | `GH_Environment` | `GH_EnvironmentSecret` | `true` |
12
12
  | `GH_Repository` | `GH_OrgSecret` | `true` |
13
13
  | `GH_Repository` | `GH_RepoSecret` | `true` |
14
+ | `GH_Repository` | `GH_Scope` | `true` |
14
15
 
15
16
  ## Diagram
16
17
 
@@ -21,7 +22,9 @@ graph LR
21
22
  n2["GH_Repository"]
22
23
  n3["GH_OrgSecret"]
23
24
  n4["GH_RepoSecret"]
25
+ n5["GH_Scope"]
24
26
  n0 -->|GH_HasSecret| n1
25
27
  n2 -->|GH_HasSecret| n3
26
28
  n2 -->|GH_HasSecret| n4
29
+ n2 -->|GH_HasSecret| n5
27
30
  ```
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## General Information
4
4
 
5
- The traversable GH_HasVariable edge represents the relationship between a repository or environment and the variables accessible within that context. This edge shows which variables are available in which scopes. Repositories can have access to both organization-level variables (scoped by visibility to all, private, or selected repositories) and repository-level variables defined directly on the repo, while environments expose their own environment-scoped variables to jobs that target them. This edge is traversable because any principal that can execute a workflow in the relevant context may be able to read variable values at runtime, and variables may contain configuration data useful for lateral movement such as deployment URLs, service names, or environment identifiers.
5
+ The traversable GH_HasVariable edge represents the relationship between a repository or environment and the variables accessible within that context. Canonical all/private organization-variable availability is factored through a GH_Scope; selected organization variables and repository/environment variables remain direct.
6
6
 
7
7
  ## Edge Schema
8
8
 
@@ -11,6 +11,7 @@ The traversable GH_HasVariable edge represents the relationship between a reposi
11
11
  | `GH_Environment` | `GH_EnvironmentVariable` | `true` |
12
12
  | `GH_Repository` | `GH_OrgVariable` | `true` |
13
13
  | `GH_Repository` | `GH_RepoVariable` | `true` |
14
+ | `GH_Repository` | `GH_Scope` | `true` |
14
15
 
15
16
  ## Diagram
16
17
 
@@ -21,7 +22,9 @@ graph LR
21
22
  n2["GH_Repository"]
22
23
  n3["GH_OrgVariable"]
23
24
  n4["GH_RepoVariable"]
25
+ n5["GH_Scope"]
24
26
  n0 -->|GH_HasVariable| n1
25
27
  n2 -->|GH_HasVariable| n3
26
28
  n2 -->|GH_HasVariable| n4
29
+ n2 -->|GH_HasVariable| n5
27
30
  ```
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## General Information
4
4
 
5
- The non-traversable GH_IsEligibleFor edge represents that a repository is within the repository-access scope of an organization runner group.
5
+ The non-traversable GH_IsEligibleFor edge represents that a repository is within the repository-access policy of an organization runner group. Canonical `all` and `private_or_internal` eligibility is factored through a GH_Scope; arbitrary selected eligibility remains a direct relationship.
6
6
 
7
7
  For runner groups, this edge evaluates the group's `visibility`, selected repository assignments, and `allows_public_repositories` setting. It does not prove that workflows in the repository can dispatch to the group's runners, because GitHub Actions may be disabled for the repository or the runner group may be restricted to selected workflows.
8
8
 
@@ -11,6 +11,7 @@ For runner groups, this edge evaluates the group's `visibility`, selected reposi
11
11
  | Source | Destination | Traversable |
12
12
  | --- | --- | --- |
13
13
  | `GH_Repository` | `GH_OrgRunnerGroup` | `false` |
14
+ | `GH_Repository` | `GH_Scope` | `false` |
14
15
 
15
16
  ## Diagram
16
17
 
@@ -18,5 +19,7 @@ For runner groups, this edge evaluates the group's `visibility`, selected reposi
18
19
  graph LR
19
20
  n0["GH_Repository"]
20
21
  n1["GH_OrgRunnerGroup"]
22
+ n2["GH_Scope"]
21
23
  n0 -.->|GH_IsEligibleFor| n1
24
+ n0 -.->|GH_IsEligibleFor| n2
22
25
  ```
@@ -0,0 +1,20 @@
1
+ # GH_RequestsAccessTo
2
+
3
+ ## General Information
4
+
5
+ The non-traversable GH_RequestsAccessTo edge records access sought by a pending fine-grained personal access token request. It is distinct from GH_CanAccess, which represents access GitHub has already granted. An all-repository request targets the organization's reusable repository/all GH_Scope.
6
+
7
+ ## Edge Schema
8
+
9
+ | Source | Destination | Traversable |
10
+ | --- | --- | --- |
11
+ | `GH_PersonalAccessTokenRequest` | `GH_Scope` | `false` |
12
+
13
+ ## Diagram
14
+
15
+ ```mermaid
16
+ graph LR
17
+ n0["GH_PersonalAccessTokenRequest"]
18
+ n1["GH_Scope"]
19
+ n0 -.->|GH_RequestsAccessTo| n1
20
+ ```
@@ -0,0 +1,29 @@
1
+ # GH_ScopedTo
2
+
3
+ ## General Information
4
+
5
+ The traversable GH_ScopedTo edge enumerates an asset included in a reusable GH_Scope. It carries an incoming capability from a target scope to each asset in the represented set. Repository scopes contain collected repositories, runner-group scopes contain organization-facing runner groups sharing repository eligibility, and organization-secret/variable scopes contain assets sharing repository availability.
6
+
7
+ ## Edge Schema
8
+
9
+ | Source | Destination | Traversable |
10
+ | --- | --- | --- |
11
+ | `GH_Scope` | `GH_OrgRunnerGroup` | `true` |
12
+ | `GH_Scope` | `GH_OrgSecret` | `true` |
13
+ | `GH_Scope` | `GH_OrgVariable` | `true` |
14
+ | `GH_Scope` | `GH_Repository` | `true` |
15
+
16
+ ## Diagram
17
+
18
+ ```mermaid
19
+ graph LR
20
+ n0["GH_Scope"]
21
+ n1["GH_OrgRunnerGroup"]
22
+ n2["GH_OrgSecret"]
23
+ n3["GH_OrgVariable"]
24
+ n4["GH_Repository"]
25
+ n0 -->|GH_ScopedTo| n1
26
+ n0 -->|GH_ScopedTo| n2
27
+ n0 -->|GH_ScopedTo| n3
28
+ n0 -->|GH_ScopedTo| n4
29
+ ```
@@ -6,7 +6,7 @@ Represents a GitHub App installed on an organization. App installations have spe
6
6
 
7
7
  Unlike fine-grained personal access tokens, GitHub does not expose separate organization and repository permission buckets for app installations, so this property remains a single flat permission list.
8
8
 
9
- Each installation is linked to its parent GH_App via a GH_InstalledAs edge. For installations with `repository_selection` set to `all`, GH_CanAccess edges are created to every collected repository in the organization. For installations with `repository_selection` set to `selected`, the collector uses the enterprise organization-installation repositories API to enumerate the granted repositories when the enterprise installation has `Enterprise organization installations: read` or `Enterprise organization installation repositories: read`. If that permission is unavailable, selected repository edges are skipped.
9
+ Each installation is linked to its parent GH_App via a GH_InstalledAs edge. Installations with `repository_selection` set to `all` use one GH_CanAccess edge to the organization's repository/all GH_Scope; GH_ScopedTo edges enumerate the repositories in that reusable scope. For installations with `repository_selection` set to `selected`, the collector uses the enterprise organization-installation repositories API to enumerate the granted repositories when the enterprise installation has `Enterprise organization installations: read` or `Enterprise organization installation repositories: read`. If that permission is unavailable, selected repository edges are skipped.
10
10
 
11
11
  ## Properties
12
12
 
@@ -42,8 +42,10 @@ graph LR
42
42
  n0["GH_App"]
43
43
  n1["GH_AppInstallation"]
44
44
  n2["GH_Repository"]
45
- n3["GH_Organization"]
45
+ n3["GH_Scope"]
46
+ n4["GH_Organization"]
46
47
  n0 -->|GH_InstalledAs| n1
47
48
  n1 -.->|GH_CanAccess| n2
48
- n3 -.->|GH_Contains| n1
49
+ n1 -.->|GH_CanAccess| n3
50
+ n4 -.->|GH_Contains| n1
49
51
  ```
@@ -58,5 +58,6 @@ graph LR
58
58
  n7 -->|GH_CanDeployToEnvironment| n1
59
59
  n8 -.->|GH_ApprovesDeploymentTo| n1
60
60
  n8 -->|GH_CanDeployToEnvironment| n1
61
+ n9 -->|GH_CanRequestOIDCTokenFor| n1
61
62
  n9 -.->|GH_DeploysTo| n1
62
63
  ```
@@ -29,12 +29,12 @@ graph LR
29
29
  n1["GH_OrgRunnerGroup"]
30
30
  n2["GH_OrgSecret"]
31
31
  n3["GH_Organization"]
32
- n4["GH_SecretScanningAlert"]
33
- n5["GH_Team"]
34
- n6["GH_User"]
32
+ n4["GH_Scope"]
33
+ n5["GH_SecretScanningAlert"]
34
+ n6["GH_Team"]
35
+ n7["GH_User"]
35
36
  n0 -->|GH_HasBaseRole| n0
36
37
  n0 -->|GH_CanCreateRepositoryWithRunnerAccess| n1
37
- n0 -->|GH_CanReadSecret| n2
38
38
  n0 -.->|GH_AddCollaborator| n3
39
39
  n0 -.->|GH_CanCreateInternalRepositories| n3
40
40
  n0 -.->|GH_CanCreatePrivateRepositories| n3
@@ -45,8 +45,10 @@ graph LR
45
45
  n0 -.->|GH_ResolveSecretScanningAlerts| n3
46
46
  n0 -.->|GH_TransferRepository| n3
47
47
  n0 -.->|GH_ViewSecretScanningAlerts| n3
48
- n0 -->|GH_CanReadSecretScanningAlert| n4
48
+ n0 -->|GH_CanReadSecret| n4
49
+ n4 -->|GH_ScopedTo| n2
50
+ n0 -->|GH_CanReadSecretScanningAlert| n5
49
51
  n3 -.->|GH_Contains| n0
50
- n5 -->|GH_HasRole| n0
51
52
  n6 -->|GH_HasRole| n0
53
+ n7 -->|GH_HasRole| n0
52
54
  ```
@@ -4,7 +4,7 @@
4
4
 
5
5
  Represents a self-hosted runner group visible within a GitHub organization. Organization runner groups may either be native to the organization or inherited from an enterprise runner group.
6
6
 
7
- Native organization runner groups contain GH_OrgRunner nodes directly. Direct memberships also emit GH_HasRunner to represent the traversable capability hop from the group to its runners. Inherited organization runner groups do not directly contain organization runners; instead, they link to the source GH_EnterpriseRunnerGroup through GH_InheritedFrom and gain access to the enterprise runners contained there. GH_IsEligibleFor edges from repositories describe repository access policy scope, while GH_CanUseRunner edges identify repositories and branches that can dispatch workflows to the group under the collected Actions and workflow-restriction settings.
7
+ Native organization runner groups contain GH_OrgRunner nodes directly. Direct memberships also emit GH_HasRunner to represent the traversable capability hop from the group to its runners. Inherited organization runner groups do not directly contain organization runners; instead, they link to the source GH_EnterpriseRunnerGroup through GH_InheritedFrom and gain access to the enterprise runners contained there. GH_IsEligibleFor uses shared runner-group scopes for canonical policies and direct edges for selected policies, while GH_CanUseRunner identifies repositories and branches that can dispatch workflows to the group under collected Actions and workflow-restriction settings.
8
8
 
9
9
  ## Properties
10
10
 
@@ -42,6 +42,7 @@ graph LR
42
42
  n4["GH_OrgRunner"]
43
43
  n5["GH_Organization"]
44
44
  n6["GH_Repository"]
45
+ n7["GH_Scope"]
45
46
  n0 -->|GH_CanUseRunner| n1
46
47
  n2 -->|GH_CanCreateRepositoryWithRunnerAccess| n1
47
48
  n1 -->|GH_InheritedFrom| n3
@@ -50,4 +51,5 @@ graph LR
50
51
  n5 -.->|GH_Contains| n1
51
52
  n6 -->|GH_CanUseRunner| n1
52
53
  n6 -.->|GH_IsEligibleFor| n1
54
+ n7 -->|GH_ScopedTo| n1
53
55
  ```
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## General Information
4
4
 
5
- Represents an organization-level GitHub Actions secret. Organization secrets can be scoped to all repositories, only private/internal repositories, or a specific set of selected repositories. The visibility property determines how GH_HasSecret edges are resolved to repository nodes.
5
+ Represents an organization-level GitHub Actions secret. All and private/internal visibility uses shared organization-secret GH_Scope nodes; arbitrary selected visibility uses direct GH_HasSecret relationships from repositories.
6
6
 
7
7
  ## Properties
8
8
 
@@ -28,12 +28,14 @@ graph LR
28
28
  n1["GH_OrgSecret"]
29
29
  n2["GH_Organization"]
30
30
  n3["GH_Repository"]
31
- n4["GH_WorkflowJob"]
32
- n5["GH_WorkflowStep"]
33
- n0 -->|GH_CanReadSecret| n1
31
+ n4["GH_Scope"]
32
+ n5["GH_WorkflowJob"]
33
+ n6["GH_WorkflowStep"]
34
34
  n2 -.->|GH_Contains| n1
35
35
  n3 -->|GH_HasSecret| n1
36
- n4 -->|GH_CanAccessSecret| n1
37
- n4 -.->|GH_UsesSecret| n1
36
+ n0 -->|GH_CanReadSecret| n4
37
+ n4 -->|GH_ScopedTo| n1
38
+ n5 -->|GH_CanAccessSecret| n1
38
39
  n5 -.->|GH_UsesSecret| n1
40
+ n6 -.->|GH_UsesSecret| n1
39
41
  ```
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## General Information
4
4
 
5
- Represents an organization-level GitHub Actions variable. Organization variables can be scoped to all repositories, only private/internal repositories, or a specific set of selected repositories. The visibility property determines how GH_HasVariable edges are resolved to repository nodes. Unlike secrets, variable values are readable via the API.
5
+ Represents an organization-level GitHub Actions variable. All and private/internal visibility uses shared organization-variable GH_Scope nodes; arbitrary selected visibility uses direct GH_HasVariable relationships from repositories. Unlike secrets, variable values are readable via the API.
6
6
 
7
7
  ## Properties
8
8
 
@@ -27,10 +27,12 @@ graph LR
27
27
  n0["GH_Organization"]
28
28
  n1["GH_OrgVariable"]
29
29
  n2["GH_Repository"]
30
- n3["GH_WorkflowJob"]
31
- n4["GH_WorkflowStep"]
30
+ n3["GH_Scope"]
31
+ n4["GH_WorkflowJob"]
32
+ n5["GH_WorkflowStep"]
32
33
  n0 -.->|GH_Contains| n1
33
34
  n2 -->|GH_HasVariable| n1
34
- n3 -.->|GH_UsesVariable| n1
35
+ n3 -->|GH_ScopedTo| n1
35
36
  n4 -.->|GH_UsesVariable| n1
37
+ n5 -.->|GH_UsesVariable| n1
36
38
  ```
@@ -104,6 +104,7 @@ graph LR
104
104
  n11["GH_Repository"]
105
105
  n12["GH_SamlIdentityProvider"]
106
106
  n13["GH_SecretScanningAlert"]
107
+ n14["GH_Scope"]
107
108
  n0 -.->|GH_AuthorizedForOrganization| n1
108
109
  n2 -.->|GH_Contains| n1
109
110
  n3 -.->|GH_AssignedTo| n1
@@ -127,5 +128,6 @@ graph LR
127
128
  n1 -->|GH_Owns| n11
128
129
  n1 -.->|GH_HasSamlIdentityProvider| n12
129
130
  n1 -.->|GH_Contains| n13
131
+ n1 -.->|GH_Contains| n14
130
132
  n9 -.->|GH_CanAccess| n1
131
133
  ```
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## General Information
4
4
 
5
- Represents a fine-grained personal access token that has been granted access to organization resources. PATs are linked to their owning user, the organization, and the repositories they can access.
5
+ Represents a fine-grained personal access token that has been granted access to organization resources. PATs are linked to their owning user, the organization, and the repositories they can access. PATs with `repository_selection` set to `all` use the organization's reusable repository/all GH_Scope; subset access remains represented by direct GH_CanAccess edges.
6
6
 
7
7
  The granted permissions are stored separately as `organization_permissions` and `repository_permissions`. Each property is a list of `scope:access` values such as `members:read` or `contents:write`, matching the permission format used on GH_WorkflowJob nodes.
8
8
 
@@ -38,9 +38,11 @@ graph LR
38
38
  n0["GH_Organization"]
39
39
  n1["GH_PersonalAccessToken"]
40
40
  n2["GH_Repository"]
41
- n3["GH_User"]
41
+ n3["GH_Scope"]
42
+ n4["GH_User"]
42
43
  n0 -.->|GH_Contains| n1
43
44
  n1 -.->|GH_CanAccess| n0
44
45
  n1 -.->|GH_CanAccess| n2
45
- n3 -.->|GH_HasPersonalAccessToken| n1
46
+ n1 -.->|GH_CanAccess| n3
47
+ n4 -.->|GH_HasPersonalAccessToken| n1
46
48
  ```
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## General Information
4
4
 
5
- Represents a pending request from an organization member to access organization resources with a fine-grained personal access token. PAT requests are linked to their owning user and the organization.
5
+ Represents a pending request from an organization member to access organization resources with a fine-grained personal access token. PAT requests are linked to their owning user and the organization. An all-repository request also has a non-traversable GH_RequestsAccessTo edge to the organization's repository/all GH_Scope.
6
6
 
7
7
  The requested permissions are stored separately as `organization_permissions` and `repository_permissions`. Each property is a list of `scope:access` values such as `members:read` or `contents:write`, matching the permission format used on GH_WorkflowJob nodes.
8
8
 
@@ -32,7 +32,9 @@ The requested permissions are stored separately as `organization_permissions` an
32
32
  graph LR
33
33
  n0["GH_Organization"]
34
34
  n1["GH_PersonalAccessTokenRequest"]
35
- n2["GH_User"]
35
+ n2["GH_Scope"]
36
+ n3["GH_User"]
36
37
  n0 -.->|GH_Contains| n1
37
- n2 -.->|GH_HasPersonalAccessTokenRequest| n1
38
+ n1 -.->|GH_RequestsAccessTo| n2
39
+ n3 -.->|GH_HasPersonalAccessTokenRequest| n1
38
40
  ```
@@ -8,6 +8,14 @@ For repositories with active workflows, the collector records the applicable def
8
8
 
9
9
  The `branch_count` and `environment_count` properties preserve GitHub-reported totals from the repository GraphQL response. These values can be compared to collected GH_Branch and GH_Environment children to identify incomplete collection before relying on branch- or environment-dependent analysis.
10
10
 
11
+ Every repository is linked from its organization's reusable repository/all GH_Scope. Private and internal repositories are also linked from repository/private_or_internal. This supports compact one- or two-hop access queries without repeating one GH_CanAccess edge per credential and repository.
12
+
13
+ Repositories also point to runner_group/all GH_Scope nodes through GH_IsEligibleFor; private and internal repositories additionally point to runner_group/private_or_internal. Those scopes enumerate canonical runner groups through GH_ScopedTo, while groups with arbitrary selected repository policies remain direct.
14
+
15
+ Organization secrets and variables with canonical all/private visibility are similarly reached through organization_secret and organization_variable scopes. Repository-owned, environment-owned, and arbitrarily selected organization assets remain direct targets.
16
+
17
+ Runner, secret, and variable boundary edges are emitted only when the organization has a matching canonical target, so empty scopes do not add per-repository edges.
18
+
11
19
  ## Properties
12
20
 
13
21
  | Property | Type | Description |
@@ -87,8 +95,9 @@ graph LR
87
95
  n12["GH_RepoRunner"]
88
96
  n13["GH_RepoSecret"]
89
97
  n14["GH_RepoVariable"]
90
- n15["GH_SecretScanningAlert"]
91
- n16["GH_Workflow"]
98
+ n15["GH_Scope"]
99
+ n16["GH_SecretScanningAlert"]
100
+ n17["GH_Workflow"]
92
101
  n0 -.->|GH_CanAccess| n1
93
102
  n2 -.->|GH_CanAccess| n1
94
103
  n3 -->|GH_Owns| n1
@@ -169,6 +178,10 @@ graph LR
169
178
  n1 -->|GH_HasSecret| n13
170
179
  n1 -.->|GH_Contains| n14
171
180
  n1 -->|GH_HasVariable| n14
172
- n1 -.->|GH_Contains| n15
181
+ n1 -->|GH_HasSecret| n15
182
+ n1 -->|GH_HasVariable| n15
183
+ n1 -.->|GH_IsEligibleFor| n15
173
184
  n1 -.->|GH_Contains| n16
185
+ n1 -.->|GH_Contains| n17
186
+ n15 -->|GH_ScopedTo| n1
174
187
  ```