> ## 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_CallsWorkflow

> [Workflow] Job calls a reusable workflow — GH_WorkflowJob → GH_Workflow

<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" />

## Edge Schema

* Source: [GH\_WorkflowJob](/opengraph/extensions/github/nodes/gh_workflowjob)
* Destination: [GH\_Workflow](/opengraph/extensions/github/nodes/gh_workflow)
* Traversable: ❌

## General Information

The traversable GH\_CallsWorkflow edge links a workflow job to a reusable workflow it invokes via the `uses:` key at the job level. This edge captures the reusable workflow call graph, enabling analysts to trace inherited permissions and secret access through called workflows.

### Local vs. remote reusable workflows

* **Local** (`./. github/workflows/_ci.yml`): the destination is matched by `name` against workflows in the same repository.
* **Remote** (`org/repo/.github/workflows/file.yml@ref`): the destination is matched by the full reference string. If the called workflow has not been collected, the edge destination will not resolve.

The `reusable_ref` property on the edge always contains the raw `uses:` value from the workflow file.
