No material or immediate-danger item was identified.
Expected scanner matches (64)
zizmor reported template-injection
Expected behavior · high confidence
The workflow passes a GitHub issue number into a command. Issue numbers are always simple numbers assigned by GitHub, so there is no way for a submitter to inject malicious code through this value.
Technical evidence
Scanner reason: zizmor matched workflow-security rule template-injection in this repository.
Contextual assessment: The expression interpolates steps.admission.outputs.issue_number into a gh CLI invocation. This output originates from github.event.issue.number, which is a GitHub-assigned sequential integer that issue authors cannot control or alter. Integer values cannot produce shell or template injection. The edited trigger does not change the issue number, which is immutable.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- template-injection
- File role
- tooling
- Source
- .github/workflows/admit-issue.yml:49
zizmor reported template-injection
Expected behavior · high confidence
The workflow uses the repository's default branch name to dispatch another workflow. Only repository administrators can change the default branch, so issue submitters cannot manipulate this value.
Technical evidence
Scanner reason: zizmor matched workflow-security rule template-injection in this repository.
Contextual assessment: The expression interpolates github.event.repository.default_branch into a --ref argument. This value is set by repository administrators and is not influenced by issue authors or external contributors. In an issues-triggered workflow running with the repository's own GITHUB_TOKEN, this is standard ref resolution with no attacker-controlled input path.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- template-injection
- File role
- tooling
- Source
- .github/workflows/admit-issue.yml:93
Gitleaks reported generic-api-key
Expected behavior · high confidence
The scanner flagged a long string of letters and numbers, thinking it might be a secret API key. It is actually a commit identifier used to lock a GitHub Action to a specific, verified version. Locking actions this way is a security best practice, not a leaked password or key.
Technical evidence
Scanner reason: Gitleaks matched secret-detection rule generic-api-key in this repository.
Contextual assessment: The flagged value on line 15 is a 40-character hex SHA-1 commit hash used to pin the actions/create-github-app-token GitHub Action to an immutable commit. It is part of a pinnedActions map alongside other pinned action SHAs. This is a test file that validates workflow configuration. Pinning actions to commit SHAs is a recommended supply-chain hardening practice, not credential exposure. The gitleaks generic-api-key rule produced a false positive on the hex string pattern.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- gitleaks 8.30.1
- Rule
- generic-api-key
- File role
- test
- Source
- tests/unit/workflows.test.ts:15
zizmor reported excessive-permissions
Expected behavior · high confidence
This permission is required to publish the website to GitHub Pages. It is a standard, documented permission for deployment workflows and does not grant unintended access.
Technical evidence
Scanner reason: zizmor matched workflow-security rule excessive-permissions in this repository.
Contextual assessment: The pages: write permission on line 21 is a required permission for the official GitHub Pages deployment workflow. Without it, the deploy-pages job cannot publish content to GitHub Pages. This is the documented minimum permission set for Pages deployments and is scoped to the pages service only.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- excessive-permissions
- File role
- tooling
- Source
- .github/workflows/deploy-pages.yml:21
zizmor reported artipacked
Expected behavior · high confidence
This workflow checks out the repository and runs some processing, but never uploads or saves any files that could capture credentials. This is a standard CI checkout pattern with no persistence risk.
Technical evidence
Scanner reason: zizmor matched workflow-security rule artipacked in this repository.
Contextual assessment: The artipacked rule flags potential credential persistence when checkout-provided tokens could be captured in uploaded artifacts. This workflow checks out the default branch and runs an inline Node script but shows no upload-artifact step or any other mechanism that persists or exposes repository contents or the git credential helper beyond the ephemeral runner. The GITHUB_TOKEN is scoped via the workflow permissions block and stays within the runner environment.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- artipacked
- File role
- tooling
- Source
- .github/workflows/triage-project-owner-request.yml:25-28
Credential access and network transmission in one file
Expected behavior · high confidence
This script uses a built-in automation token to talk to GitHub's own servers, which is exactly what the token is designed for. The token never leaves GitHub and is not sent anywhere unexpected.
Technical evidence
Scanner reason: A credential source and an outbound network operation were detected in the same file.
Contextual assessment: The GITHUB_TOKEN environment variable is read and placed in an Authorization header for an outbound fetch to the official GitHub REST API hostname. This is a standard GitHub Actions automation pattern: the platform-provided token authenticates to the platform's own API. The destination is the intended and only recipient. There is no exfiltration to a third party, no concealed endpoint, and no dynamic URL construction that could redirect the token elsewhere. The path parameter is a GitHub API resource path used for kit withdrawal issue processing.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- tavernkeeper 3
- Rule
- credential-exfiltration
- File role
- tooling
- Source
- scripts/kits/apply-withdrawal.mjs:183
Credential access and network transmission in one file
Expected behavior · high confidence
This is a build automation script that uses a GitHub access token to talk to GitHub's own API for routine repository tasks. The token never leaves GitHub and is used exactly as intended.
Technical evidence
Scanner reason: A credential source and an outbound network operation were detected in the same file.
Contextual assessment: This tooling script reads GITHUB_TOKEN from the environment and uses it only in the Authorization header for requests to the official GitHub API. The token authenticates workflow-dispatch and issue-comment API calls against the project's own repository, which is the standard and intended use of a CI-provided GitHub token. No token value is logged, written to disk, sent to a third-party endpoint, or embedded in request bodies.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- tavernkeeper 3
- Rule
- credential-exfiltration
- File role
- tooling
- Source
- scripts/submissions/retry-fork-dependencies.mjs:100
OpenGrep reported tavernkeeper.credential-exfiltration.javascript-secret-to-network
Expected behavior · high confidence
This script reads a GitHub access token and sends it only to GitHub's own API to download reaction data from GitHub issues. That is exactly what the token is for and is a normal part of the project's automated data-refresh tooling.
Technical evidence
Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.credential-exfiltration.javascript-secret-to-network in this repository.
Contextual assessment: The flagged credential source is process.env.GITHUB_TOKEN, used as a Bearer token in an Authorization header sent via fetch to api.github.com. The destination is GitHub's official REST API endpoint for issue reactions, constructed from process.env.GITHUB_REPOSITORY and a kit's source_issue_number. The project purpose describes automated GitHub workflow refresh operations that snapshot provider-derived data. Sending a GitHub token to the GitHub API is the standard and correct authentication pattern for this CI tooling script.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- opengrep 1.26.0
- Rule
- tavernkeeper.credential-exfiltration.javascript-secret-to-network
- File role
- tooling
- Source
- scripts/kits/refresh-reactions.mjs:142-157
zizmor reported artipacked
Expected behavior · high confidence
The scanner flagged a standard GitHub Actions checkout setting that saves a temporary access token so the workflow can create branches and pull requests. That is exactly what this workflow needs to do, and there is no sign that the token is being copied into any uploaded file or shared anywhere outside the temporary build machine.
Technical evidence
Scanner reason: zizmor matched workflow-security rule artipacked in this repository.
Contextual assessment: The zizmor artipacked rule flags the default persist-credentials behavior of actions/checkout, which writes the GITHUB_TOKEN into the local git config so subsequent git push and branch operations succeed. This workflow's stated purpose is to create review pull requests for project owner requests, which requires git write access. The checkout uses fetch-depth 0 and ref main to inspect full repository state before generating and pushing a branch. No artifact upload step is visible in the supplied source that would expose the .git directory or its embedded token to untrusted consumers. The persisted credential is scoped to the ephemeral runner, used only for legitimate in-workflow git operations, and discarded when the runner terminates. The scanner's own confidence is low, consistent with a pattern match on the checkout step rather than a confirmed exfiltration path.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- artipacked
- File role
- tooling
- Source
- .github/workflows/generate-project-owner-request.yml:39-43
Credential access and network transmission in one file
Expected behavior · high confidence
This script uses a GitHub access token to talk to GitHub's own API so it can automatically manage submission issues and labels in the project's repository. The token is only sent to GitHub, which is exactly what it is meant for. It is not stolen or sent anywhere else.
Technical evidence
Scanner reason: A credential source and an outbound network operation were detected in the same file.
Contextual assessment: The file is a CI/automation triage script (file_role tooling) that reads GITHUB_TOKEN from the process environment and sends it only to the official GitHub REST API endpoint to authenticate issue and label management calls for the repository's own Kit-submission workflow. The token is used for its intended purpose—authorizing GitHub API requests that create labels, read issues, and post validation comments within the same repository. There is no transmission to third-party or non-GitHub destinations, no logging of the token value, and no persistence of credentials. This is standard GitHub Actions automation behavior.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- tavernkeeper 3
- Rule
- credential-exfiltration
- File role
- tooling
- Source
- scripts/submissions/triage-kit-issue.mjs:100
Credential access and network transmission in one file
Expected behavior · high confidence
This is a GitHub automation helper script. It uses the standard GitHub token provided automatically to actions in order to update issues on GitHub itself. The token is only sent to the official GitHub API, which is exactly what it is designed for.
Technical evidence
Scanner reason: A credential source and an outbound network operation were detected in the same file.
Contextual assessment: This tooling script reads GITHUB_TOKEN from the execution environment and includes it as a Bearer token in an Authorization header sent to the official GitHub API. This is the standard, intended pattern for GitHub Actions automation that manages repository issues, labels, and comments. The destination is the legitimate API endpoint, the token is the standard built-in action token, and there is no routing to third-party endpoints or concealment.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- tavernkeeper 3
- Rule
- credential-exfiltration
- File role
- tooling
- Source
- scripts/submissions/admit-issue.mjs:236
zizmor reported artipacked
Expected behavior · high confidence
The workflow checks out the full repository history, which is needed for the build. It does not save any artifacts that could accidentally expose the temporary workflow token, so the flagged risk does not apply here.
Technical evidence
Scanner reason: zizmor matched workflow-security rule artipacked in this repository.
Contextual assessment: The artipacked rule flags checkout with fetch-depth 0 as a potential vector for persisting the GITHUB_TOKEN in uploaded artifacts. This workflow performs a static site build and deploys directly to GitHub Pages; it does not upload reusable workflow artifacts that could capture or redistribute the temporary action token. The full checkout is needed for commit validation and history-based build steps. No credential persistence path exists in the observed data flow.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- artipacked
- File role
- tooling
- Source
- .github/workflows/deploy-pages.yml:39-42
zizmor reported artipacked
Expected behavior · high confidence
This is a routine maintenance workflow that checks out the repository, updates catalog data files, and commits those changes back. It is manually triggered, does not upload any files that could contain secrets, and uses only the standard temporary token GitHub provides to actions. No credential exposure occurs.
Technical evidence
Scanner reason: zizmor matched workflow-security rule artipacked in this repository.
Contextual assessment: The flagged lines are a standard actions/checkout step with fetch-depth 0, needed for the subsequent git commit and push operations. The workflow is manually triggered via workflow_dispatch, restricted to refs/heads/main, and performs catalog data backfill by running project scripts, committing JSON changes, and pushing to main. No artifacts are uploaded, no secrets are read or exfiltrated, and the only token used is the default ephemeral GITHUB_TOKEN scoped to contents:write. The artipacked heuristic flags checkout-plus-push patterns, but this workflow does not persist credentials in artifacts or git history.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- artipacked
- File role
- tooling
- Source
- .github/workflows/backfill-repository-identities.yml:24-27
Credential access and network transmission in one file
Expected behavior · high confidence
The script uses a standard GitHub token to authenticate with GitHub's official API. This is normal behavior for an automation script that interacts with GitHub issues and workflows.
Technical evidence
Scanner reason: A credential source and an outbound network operation were detected in the same file.
Contextual assessment: The script reads the GITHUB_TOKEN environment variable and passes it as a Bearer token to the official GitHub API endpoint via the Authorization header. This is standard and required for GitHub API automation, such as dispatching workflows and reading issues, which matches the script's stated purpose.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- tavernkeeper 3
- Rule
- credential-exfiltration
- File role
- tooling
- Source
- scripts/submissions/retry-frontend-dependencies.mjs:111
OpenGrep reported tavernkeeper.credential-exfiltration.javascript-secret-to-network
Expected behavior · high confidence
This script reads a GitHub access token and uses it to ask GitHub's own API for project README files. The token is sent only to GitHub, which is exactly what the token is for. This is normal behavior for a tool that builds a catalog of public GitHub repositories.
Technical evidence
Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.credential-exfiltration.javascript-secret-to-network in this repository.
Contextual assessment: This is a catalog-enrichment tooling script that fetches README content from the GitHub REST API. A GitHub token is read from a configured secret or the GH_TOKEN environment variable and sent as a Bearer Authorization header to api.github.com. The destination is GitHub's own first-party API endpoint, the token is used for its intended authentication purpose, and the request fetches repository metadata for catalog indexing. No third-party or unexpected destination receives the credential.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- opengrep 1.26.0
- Rule
- tavernkeeper.credential-exfiltration.javascript-secret-to-network
- File role
- tooling
- Source
- scripts/catalog/readme-source.mjs:33-39
OpenGrep reported tavernkeeper.credential-exfiltration.javascript-secret-to-network
Expected behavior · high confidence
The scanner saw a token being sent over the network and flagged it. Looking at the code, the token is the normal GitHub action credential and it is sent only to GitHub's own service to perform routine issue management tasks.
Technical evidence
Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.credential-exfiltration.javascript-secret-to-network in this repository.
Contextual assessment: The rule matched because a credential source and a network request appear together. Examining the actual data flow, the token is the standard GITHUB_TOKEN environment variable and the network call targets the official GitHub REST API. The token authorizes the action to read and modify repository issues as part of issue admission automation. There is no exfiltration, redirection, logging of the token value, or transmission to any destination other than the GitHub API.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- opengrep 1.26.0
- Rule
- tavernkeeper.credential-exfiltration.javascript-secret-to-network
- File role
- tooling
- Source
- scripts/submissions/admit-issue.mjs:236-246
zizmor reported artipacked
Expected behavior · high confidence
This workflow checks out the project code and runs a help-request labeling script. It does not save any files or secrets to GitHub artifacts, so the flagged credential-persistence concern does not apply here.
Technical evidence
Scanner reason: zizmor matched workflow-security rule artipacked in this repository.
Contextual assessment: The flagged checkout step uses a pinned commit SHA and targets the repository default branch. The workflow does not upload artifacts, persist credentials to artifacts, or expose the GITHUB_TOKEN beyond passing it as an environment variable to a local triage script. No artifact-based credential persistence path exists in the supplied source.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- artipacked
- File role
- tooling
- Source
- .github/workflows/triage-help-request.yml:24-27
zizmor reported artipacked
Expected behavior · high confidence
The scanner flagged a checkout step that might expose credentials through uploaded files. In practice, this job only checks out code with read-only access and never uploads any artifacts. The special token it creates later is used for a single API call and is not saved anywhere, so there is no credential leakage path.
Technical evidence
Scanner reason: zizmor matched workflow-security rule artipacked in this repository.
Contextual assessment: The artipacked rule flags checkout steps where a persistent token could leak through artifacts. In this workflow the checkout at the flagged location runs under permissions limited to contents read, and no artifacts are uploaded in that job. The separately created GitHub App token is scoped to a single repository with actions write permission, used transiently in a CLI API call via an environment variable, and never written to disk or included in any artifact. The pages artifact uploaded in the build job contains only the static site export. All action versions are pinned to commit hashes.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- artipacked
- File role
- tooling
- Source
- .github/workflows/deploy-pages.yml:125-126
Credential access and network transmission in one file
Expected behavior · high confidence
This script automates project-submission review by talking to GitHub. It uses a standard GitHub automation token to authenticate with GitHub's own API so it can read issues, post comments, and manage labels. The token is sent only to GitHub, which is the service that issued it and the intended destination. This is normal and expected for repository automation.
Technical evidence
Scanner reason: A credential source and an outbound network operation were detected in the same file.
Contextual assessment: This file is CI automation tooling that manages GitHub project submission issues. A helper function reads a GITHUB_TOKEN environment variable and includes it as a bearer credential in requests to the GitHub REST API. The only network destination is the official GitHub API hostname, which is exactly the intended audience for that token. The function is used by nearby triage routines to create and update issue comments and labels. No other environment variables, local secret files, model-provider keys, or user-supplied credentials are read, and no third-party or unlisted endpoint receives the token.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- tavernkeeper 3
- Rule
- credential-exfiltration
- File role
- tooling
- Source
- scripts/submissions/triage-issue.mjs:421
zizmor reported excessive-permissions
Expected behavior · high confidence
This automation can write changes back to the repository. That is needed here because the workflow imports security reports and saves the results into the repository. The permission is declared explicitly and the workflow only runs on a schedule or from the main branch.
Technical evidence
Scanner reason: zizmor matched workflow-security rule excessive-permissions in this repository.
Contextual assessment: The workflow grants contents: write at the top level, which is required because the job checks out the main branch with fetch-depth 0 and later commits imported report data back to the repository. The job outputs reference steps.commit.outputs.changed and steps.commit.outputs.sha, confirming that a commit-and-push step is part of this workflow. The permission is explicitly scoped rather than granted via write-all, and the job is restricted to schedule or main-branch execution with a concurrency group.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- excessive-permissions
- File role
- tooling
- Source
- .github/workflows/import-tavernkeeper-reports.yml:20
OpenGrep reported tavernkeeper.credential-exfiltration.javascript-secret-to-network
Expected behavior · high confidence
This is a CI automation script that uses GitHub's built-in authentication token to talk to GitHub's own API for managing help-issue labels. The token goes only to GitHub, which is exactly what it is designed for. There is no sign of the token being sent anywhere else.
Technical evidence
Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.credential-exfiltration.javascript-secret-to-network in this repository.
Contextual assessment: The file is a GitHub Actions help-issue triage tool. It reads the standard GITHUB_TOKEN environment variable and sends it as a Bearer token to the official api.github.com endpoint for issue and label management. The token is used only for its intended GitHub API authentication purpose, is not logged or persisted, and is not transmitted to any third-party destination. This is the conventional pattern for GitHub Actions automation.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- opengrep 1.26.0
- Rule
- tavernkeeper.credential-exfiltration.javascript-secret-to-network
- File role
- tooling
- Source
- scripts/help/triage-help-issue.mjs:213-223
zizmor reported artipacked
Expected behavior · high confidence
The workflow checks out the full repository history, which is normal for a workflow that needs to update files and push changes. No artifacts are created or uploaded, so there is no risk of accidentally saving credentials in an artifact.
Technical evidence
Scanner reason: zizmor matched workflow-security rule artipacked in this repository.
Contextual assessment: The flagged checkout step uses fetch-depth 0, which is standard for workflows that must synchronize and commit back to the repository. No artifact upload steps exist in this workflow, so there is no credential persistence through artifacts. The zizmor finding is a low-confidence heuristic match with no concrete data flow supporting it.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- artipacked
- File role
- tooling
- Source
- .github/workflows/apply-kit-withdrawal.yml:26-29
zizmor reported excessive-permissions
Expected behavior · medium confidence
This automation can create or update issues in the repository. A workflow that imports and reconciles security reports would plausibly create tracking issues for findings. The permission is declared explicitly and the workflow is restricted to scheduled or main-branch runs.
Technical evidence
Scanner reason: zizmor matched workflow-security rule excessive-permissions in this repository.
Contextual assessment: Detailed technical wording was omitted by the public report safety filter.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- excessive-permissions
- File role
- tooling
- Source
- .github/workflows/import-tavernkeeper-reports.yml:21
OpenGrep reported tavernkeeper.credential-exfiltration.javascript-secret-to-network
Expected behavior · high confidence
The pattern looks suspicious at a glance because a token and a network request are in the same function, but the token is only sent to GitHub's official API as intended. There is no credential theft or leakage.
Technical evidence
Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.credential-exfiltration.javascript-secret-to-network in this repository.
Contextual assessment: The scanner matched because a credential source and a network call appear together. Examining the actual flow, the credential is the GitHub Actions runtime token and the fetch target is the official GitHub API endpoint. The token is used solely as a bearer credential for authenticated requests to that API, which is its designated purpose. The API path is concatenated from a controlled resource identifier, not an attacker-influenced external URL. No credential value is logged, written to disk, or transmitted to any destination other than the GitHub API.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- opengrep 1.26.0
- Rule
- tavernkeeper.credential-exfiltration.javascript-secret-to-network
- File role
- tooling
- Source
- scripts/kits/apply-withdrawal.mjs:183-193
zizmor reported artipacked
Expected behavior · high confidence
This is a normal GitHub Actions workflow that checks out the repository, runs catalog enrichment scripts, and commits results. It does not upload any files or artifacts that could accidentally expose credentials. The flagged checkout step is standard practice.
Technical evidence
Scanner reason: zizmor matched workflow-security rule artipacked in this repository.
Contextual assessment: The zizmor artipacked rule flags potential credential persistence through artifacts, but the flagged lines 42-45 are a standard actions/checkout step with fetch-depth 0. The workflow contains no upload-artifact steps. Secrets (GITHUB_TOKEN, GH_TOKEN, and enrichment API credentials) are passed as environment variables to npm scripts that perform git commits and GitHub API reporting. The runner is ephemeral and no artifacts are published that could retain credentials. The checkout action's default token persistence is confined to the temporary runner filesystem and is not exposed beyond the job.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- artipacked
- File role
- tooling
- Source
- .github/workflows/enrich-catalog.yml:42-45
zizmor reported artipacked
Expected behavior · high confidence
The scanner flagged a risk about tokens leaking through saved artifacts, but this workflow never saves artifacts, so the risk does not apply.
Technical evidence
Scanner reason: zizmor matched workflow-security rule artipacked in this repository.
Contextual assessment: The artipacked concern is about GITHUB_TOKEN persistence in checkout state being exposed through uploaded artifacts. This checkout step in the retry job reads local JSON state files and dispatches workflows; no artifacts are uploaded. The token in the checkout is ephemeral and destroyed with the runner.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- artipacked
- File role
- tooling
- Source
- .github/workflows/review-catalog-policy.yml:43
Credential access and network transmission in one file
Expected behavior · high confidence
The workflow uses GitHub's built-in temporary token to talk to GitHub's own API for managing issue labels and comments. This is exactly what the token is designed for, and it expires when the workflow ends. There is no credential theft or suspicious network activity.
Technical evidence
Scanner reason: A credential source and an outbound network operation were detected in the same file.
Contextual assessment: The credential in question is the ephemeral GITHUB_TOKEN provided automatically by GitHub Actions, not a user-supplied secret or model-provider API key. The outbound network call targets the GitHub API at api.github.com, which is the intended destination for this token. The workflow uses the token to manage issue labels and comments as part of its stated kit-withdrawal automation purpose. This is the canonical pattern for GitHub Actions workflows that interact with repository issues. No third-party or unexpected destination is present.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- tavernkeeper 3
- Rule
- credential-exfiltration
- File role
- tooling
- Source
- .github/workflows/apply-kit-withdrawal.yml:64
OpenGrep reported tavernkeeper.credential-exfiltration.javascript-secret-to-network
Expected behavior · high confidence
This is the same behavior seen in the related finding: the script uses a GitHub automation token to call GitHub's own API for managing issues and labels. The token only goes to GitHub and is used for its intended purpose. Nothing about this suggests credential theft or misuse.
Technical evidence
Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.credential-exfiltration.javascript-secret-to-network in this repository.
Contextual assessment: The data flow flagged here is the same GitHub API helper assessed in the companion candidate. The GITHUB_TOKEN environment variable is used solely as a bearer credential for requests to the official GitHub API endpoint. The request path is a relative API path passed by triage functions within this same tooling file, and the only destination is GitHub. There is no indication the token is logged, persisted to disk, embedded in issue bodies, or sent anywhere other than the GitHub API. This matches the project purpose of automating submission triage through GitHub issues.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- opengrep 1.26.0
- Rule
- tavernkeeper.credential-exfiltration.javascript-secret-to-network
- File role
- tooling
- Source
- scripts/submissions/triage-issue.mjs:421-431
Credential access and network transmission in one file
Expected behavior · high confidence
The script uses GitHub's own token to contact GitHub's own API to triage help issues. This is normal and expected for a repository automation tool.
Technical evidence
Scanner reason: A credential source and an outbound network operation were detected in the same file.
Contextual assessment: The same credential access and network call are co-located in this file, but the destination is the official GitHub API and the credential is the standard GITHUB_TOKEN used for repository issue triage. The data flow is proportionate to the stated tooling purpose, with no exfiltration, obfuscation, or third-party endpoint.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- tavernkeeper 3
- Rule
- credential-exfiltration
- File role
- tooling
- Source
- scripts/help/triage-help-issue.mjs:213
zizmor reported template-injection
Expected behavior · high confidence
Same as other issue-number usages: the value is a simple number from GitHub, not user-controlled text, so no injection is possible.
Technical evidence
Scanner reason: zizmor matched workflow-security rule template-injection in this repository.
Contextual assessment: Same pattern as other issue_number interpolations. The value derives from the immutable GitHub-assigned issue number, an integer that cannot carry injection payloads.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- template-injection
- File role
- tooling
- Source
- .github/workflows/admit-issue.yml:94
zizmor reported template-injection
Expected behavior · high confidence
The value passed into the command is a GitHub issue number, which is always a number and cannot contain malicious code.
Technical evidence
Scanner reason: zizmor matched workflow-security rule template-injection in this repository.
Contextual assessment: Same issue_number interpolation pattern. The output is a GitHub-assigned integer with no attacker control path.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- template-injection
- File role
- tooling
- Source
- .github/workflows/admit-issue.yml:79
Credential access and network transmission in one file
Expected behavior · high confidence
The scanner noticed a token and a network request in the same file. The token is a GitHub API key and the request goes to GitHub's own API to retrieve repository information for the catalog. Sending the key to GitHub is the correct and expected use of that key.
Technical evidence
Scanner reason: A credential source and an outbound network operation were detected in the same file.
Contextual assessment: The scanner flags the co-occurrence of credential access and a network call in the same file. Here the credential is a GitHub API token and the network call is a fetch to api.github.com with the token supplied as a standard Bearer header. The file role is tooling for catalog enrichment, the project purpose explicitly states it indexes public GitHub project information, and the token is transmitted only to GitHub's first-party API for authenticated metadata retrieval. This is proportionate and disclosed by the project's stated purpose.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- tavernkeeper 3
- Rule
- credential-exfiltration
- File role
- tooling
- Source
- scripts/catalog/readme-source.mjs:33
OpenGrep reported tavernkeeper.credential-exfiltration.javascript-secret-to-network
Expected behavior · high confidence
The scanner saw a token being sent over the network, but the destination is GitHub's own API and the token is the normal one GitHub Actions provides for managing issues. This is the expected way a submission-triage automation script works, not a theft attempt.
Technical evidence
Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.credential-exfiltration.javascript-secret-to-network in this repository.
Contextual assessment: The matched pattern detects a credential source (process.env.GITHUB_TOKEN) reaching a network sink (fetch to api.github.com). Examining the actual data flow, the credential is a standard GitHub Actions token and the sole network destination is the official GitHub REST API used for repository issue and label management. The token is never written to disk, logged, or directed to any non-GitHub host. The capability is proportional to the stated project purpose of automating Kit-submission triage, and the behavior is visible in source. This is legitimate automation, not credential exfiltration.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- opengrep 1.26.0
- Rule
- tavernkeeper.credential-exfiltration.javascript-secret-to-network
- File role
- tooling
- Source
- scripts/submissions/triage-kit-issue.mjs:100-110
zizmor reported artipacked
Expected behavior · high confidence
This is a standard GitHub automation workflow that checks out the project's own code to process project-owner request closures. It uses GitHub's built-in temporary token with appropriate permissions for closing issues and pull requests. The checkout is pinned to a specific version and pulls from the main branch, not from untrusted pull-request code. No evidence of credential leakage was found.
Technical evidence
Scanner reason: zizmor matched workflow-security rule artipacked in this repository.
Contextual assessment: The zizmor artipacked rule flags potential GITHUB_TOKEN persistence through artifacts when actions/checkout is used. The flagged lines are a checkout step pinned to a specific commit SHA, fetching only the default branch at depth 1. The workflow uses the standard GITHUB_TOKEN with contents:write and issues:write permissions, which is appropriate for a lifecycle workflow that closes issues and PRs. The checkout targets the repository default branch rather than pull-request head, which is a security best practice that avoids executing untrusted PR code. No artifact upload steps are visible in the provided source; the Node script writes only to RUNNER_TEMP, which is ephemeral. The GITHUB_TOKEN persisted in the checkout's git config is scoped, short-lived, and cleaned up with the ephemeral runner. There is no evidence of credential exfiltration or persistence beyond the runner lifecycle.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- artipacked
- File role
- tooling
- Source
- .github/workflows/project-owner-request-lifecycle.yml:34-38
zizmor reported excessive-permissions
Expected behavior · high confidence
This permission lets the workflow securely identify itself to GitHub Pages for deployment using a short-lived token. It is the standard, recommended setup for publishing Pages sites and does not expose other repository secrets.
Technical evidence
Scanner reason: zizmor matched workflow-security rule excessive-permissions in this repository.
Contextual assessment: The id-token: write permission on line 22 is required for GitHub Pages deployments that use the official actions/deploy-pages action with OIDC token exchange. It allows the workflow to request an OIDC token for the Pages deployment identity. This is the documented configuration for secure Pages publishing and does not grant broad repository or secret access.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- excessive-permissions
- File role
- tooling
- Source
- .github/workflows/deploy-pages.yml:22
zizmor reported artipacked
Expected behavior · high confidence
This workflow needs Git credentials to publish approved catalog updates, so keeping them available during the job is intentional and normal. The credentials are not leaked or saved anywhere outside the temporary job environment.
Technical evidence
Scanner reason: zizmor matched workflow-security rule artipacked in this repository.
Contextual assessment: The artipacked finding concerns default credential persistence from actions/checkout. This workflow is a manually dispatched publish pipeline that explicitly commits and pushes to main using the GITHUB_TOKEN. Credential persistence is the intended mechanism enabling the git push at line 73. The workflow runs only on refs/heads/main, is triggered by workflow_dispatch with a numeric issue number, and uses pinned action SHAs. No artifact upload of credentials occurs, and the token scope is appropriate for the stated publish purpose.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- artipacked
- File role
- tooling
- Source
- .github/workflows/apply-kit-submission.yml:26-29
zizmor reported artipacked
Expected behavior · high confidence
The scanner flagged that the workflow's checkout step saves a GitHub access token in the local git configuration. This is expected here because the workflow's job is to refresh catalog data and commit those changes back to the repository, which requires git write access. No artifacts are uploaded that could leak the token, and the token is temporary and limited to this repository.
Technical evidence
Scanner reason: zizmor matched workflow-security rule artipacked in this repository.
Contextual assessment: The zizmor artipacked rule flags the checkout step with fetch-depth 0, which by default persists the scoped GITHUB_TOKEN into .git/config. This workflow needs git write access to commit refreshed catalog snapshots back to the repository, so credential persistence is intentional and proportionate. No upload-artifact step exists in the visible workflow, so there is no artifact-based credential exfiltration path. The token is the standard ephemeral repository-scoped GITHUB_TOKEN with contents:write, used for its stated purpose of committing catalog data.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- artipacked
- File role
- tooling
- Source
- .github/workflows/refresh-catalog.yml:49-52
zizmor reported artipacked
Expected behavior · high confidence
The checkout uses a commit hash provided by a trusted maintainer who manually triggered the workflow. No files are saved as artifacts, so there is no token leakage path.
Technical evidence
Scanner reason: zizmor matched workflow-security rule artipacked in this repository.
Contextual assessment: The checkout uses a user-supplied merge_sha as the ref and fetch-depth 0 for full history. The workflow_dispatch trigger can only be invoked by repository collaborators with write access, so the ref input is not attacker-controlled from an external perspective. No artifacts are uploaded, so the artipacked token-persistence vector does not apply.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- artipacked
- File role
- tooling
- Source
- .github/workflows/review-catalog-policy.yml:82-86
zizmor reported template-injection
Expected behavior · high confidence
The workflow uses the repository's default branch name, which only administrators can set. Issue authors have no way to change this value.
Technical evidence
Scanner reason: zizmor matched workflow-security rule template-injection in this repository.
Contextual assessment: Interpolates github.event.repository.default_branch, an admin-controlled value, into a --ref argument. Issue submitters cannot influence the repository's default branch. This is standard workflow dispatch usage in an issues-triggered context.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- template-injection
- File role
- tooling
- Source
- .github/workflows/admit-issue.yml:78
OpenGrep reported tavernkeeper.credential-exfiltration.javascript-secret-to-network
Expected behavior · high confidence
This script uses a standard GitHub automation token to talk to GitHub's own API. It creates issues and triggers review workflows as part of the project's catalog maintenance. The token goes to GitHub and nowhere else, which is exactly how it is designed to be used.
Technical evidence
Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.credential-exfiltration.javascript-secret-to-network in this repository.
Contextual assessment: The tooling script reads GITHUB_TOKEN from the process environment and transmits it only to the official GitHub API endpoint via an Authorization Bearer header. The token is used for legitimate repository automation: creating issues, reusing open issues, and dispatching triage workflows. The destination matches the token issuer. No third-party or attacker-controlled sink is present. The file role is a maintenance utility invoked in CI.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- opengrep 1.26.0
- Rule
- tavernkeeper.credential-exfiltration.javascript-secret-to-network
- File role
- tooling
- Source
- scripts/submissions/backfill-fork-dependencies.mjs:289-299
OpenGrep reported tavernkeeper.credential-exfiltration.javascript-secret-to-network
Expected behavior · high confidence
A scanner matched because a token is sent over the internet. However, the token is sent to GitHub's official API to authorize automation tasks, which is exactly what it is designed for.
Technical evidence
Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.credential-exfiltration.javascript-secret-to-network in this repository.
Contextual assessment: The scanner flagged a network sink carrying a secret. The secret is the GITHUB_TOKEN, and the network sink is a fetch call to api.github.com. This data flow is the intended and standard method for authenticating to the GitHub REST API within a GitHub Actions context.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- opengrep 1.26.0
- Rule
- tavernkeeper.credential-exfiltration.javascript-secret-to-network
- File role
- tooling
- Source
- scripts/submissions/retry-frontend-dependencies.mjs:111-121
zizmor reported artipacked
Expected behavior · high confidence
The scanner noticed that checking out code leaves a temporary access token on the build machine. In this workflow nothing uploads, caches, or shares the build machine's files, so the token stays on a machine that is destroyed immediately after the job finishes. No real exposure path exists.
Technical evidence
Scanner reason: zizmor matched workflow-security rule artipacked in this repository.
Contextual assessment: The scanner flags the default persist-credentials behavior of actions/checkout, which stores the ephemeral GITHUB_TOKEN in the local .git/config on the runner. In this workflow there is no upload-artifact step, no cache step, and no mechanism that exports the workspace contents. The workspace is destroyed when the ephemeral ubuntu-latest runner terminates. The token is the default repository-scoped GITHUB_TOKEN with a short lifetime, and the checkout action is pinned by SHA. No data flow exposes the persisted credential outside the ephemeral runner.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- artipacked
- File role
- tooling
- Source
- .github/workflows/triage-kit-submission.yml:25-26
zizmor reported template-injection
Expected behavior · high confidence
The workflow uses the repository's own default branch name in a shell command. That value is set by the repository owner and cannot be manipulated by outside users, so there is no injection risk.
Technical evidence
Scanner reason: zizmor matched workflow-security rule template-injection in this repository.
Contextual assessment: The expression at line 160 interpolates github.event.repository.default_branch, which is repository metadata determined by the repository configuration. It is not derived from user-supplied event payloads such as issue titles, PR bodies, comments, or branch names created by external contributors. Without attacker control over the interpolated value, template expansion cannot produce code injection.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- template-injection
- File role
- tooling
- Source
- .github/workflows/publish-project-transaction.yml:160
zizmor reported template-injection
Expected behavior · high confidence
The value is a GitHub issue number, always a simple number, so no code injection is possible.
Technical evidence
Scanner reason: zizmor matched workflow-security rule template-injection in this repository.
Contextual assessment: Same issue_number interpolation pattern. The value is a GitHub-assigned integer with no path for attacker-controlled content.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- template-injection
- File role
- tooling
- Source
- .github/workflows/admit-issue.yml:69
zizmor reported template-injection
Expected behavior · high confidence
The value inserted into the command is a Git commit hash produced by the workflow itself, not user-supplied text. There is no way for an outside party to inject commands through this path.
Technical evidence
Scanner reason: zizmor matched workflow-security rule template-injection in this repository.
Contextual assessment: The template expression at line 84 references steps.commit.outputs.sha, which is set at line 82 from git rev-parse HEAD within the same workflow run. This is an internally generated commit hash, not externally controlled input. The only workflow input is issue_number with type number, which constrains it to numeric values. There is no attacker-controlled data reaching this template expansion, so no code injection is possible.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- template-injection
- File role
- tooling
- Source
- .github/workflows/apply-kit-submission.yml:84
zizmor reported template-injection
Expected behavior · high confidence
The workflow passes a commit identifier it just created itself into a deployment command. No outside or user-supplied content reaches this value, so there is no injection risk.
Technical evidence
Scanner reason: zizmor matched workflow-security rule template-injection in this repository.
Contextual assessment: The flagged expression expands an internally-generated workflow output, not attacker-controlled input. The value originates from a prior step that sets it via git rev-parse HEAD, producing a deterministic hex commit hash. There is no untrusted data path into this expression, so template injection is not achievable.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- template-injection
- File role
- tooling
- Source
- .github/workflows/apply-kit-withdrawal.yml:186
zizmor reported artipacked
Expected behavior · high confidence
This automation runs inside a temporary GitHub server that is discarded after the job finishes. It does not save or upload any files that could contain credentials, so there is no realistic way for a token to be exposed or persisted.
Technical evidence
Scanner reason: zizmor matched workflow-security rule artipacked in this repository.
Contextual assessment: The workflow checks out the repository, sets up Node.js, and runs a local script with the scoped ephemeral GITHUB_TOKEN. There are no artifact upload steps, no cache steps, and no steps that would publish the workspace or .git directory. Permissions are narrowly scoped to contents:read, issues:read, and actions:write. The artipacked heuristic flags checkout-based credential persistence, but without any artifact or cache persistence step there is no path for the token to leave the ephemeral runner. The scanner itself reports low confidence.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- artipacked
- File role
- tooling
- Source
- .github/workflows/retry-fork-dependencies.yml:30-31
zizmor reported artipacked
Expected behavior · high confidence
This is a standard GitHub Actions workflow that checks out code and runs a script. The scanner flagged the checkout step because it temporarily stores a token on the runner, but nothing in this workflow saves or uploads files that could carry that token away. The actions are pinned to exact versions and permissions are limited. This is normal CI behavior with no real risk.
Technical evidence
Scanner reason: zizmor matched workflow-security rule artipacked in this repository.
Contextual assessment: The zizmor artipacked rule flags actions/checkout because persist-credentials defaults to true, writing a token into .git/config on the runner. This workflow checks out the repository, sets up Node.js, runs a local script with GITHUB_TOKEN passed via environment, and produces no uploaded artifacts. There is no upload-artifact or cache step that could persist the .git directory or its embedded credential off the ephemeral runner. Both actions are pinned by commit SHA, permissions are explicitly scoped to contents:read, issues:read, actions:write, and the token never leaves the runner. The default credential persistence is expected for a CI checkout and poses no concrete exfiltration path in this workflow.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- artipacked
- File role
- tooling
- Source
- .github/workflows/retry-frontend-dependencies.yml:26-27
Credential access and network transmission in one file
Expected behavior · high confidence
This workflow uses the built-in GitHub token to talk to GitHub's own API to manage project issues. The token only goes to GitHub and is used for exactly the purpose the workflow name describes. This is normal automation, not credential theft.
Technical evidence
Scanner reason: A credential source and an outbound network operation were detected in the same file.
Contextual assessment: The scanner flags the co-occurrence of a credential source and a network call in the same file. The credential is the standard GitHub-provided GITHUB_TOKEN passed through an environment variable, and the sole network destination is api.github.com over HTTPS. This is the expected pattern for a GitHub Actions workflow that validates issue triage requests by calling the GitHub REST API. The token is repository-scoped via the permissions block and is never written to logs, files, or any destination outside the GitHub API.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- tavernkeeper 3
- Rule
- credential-exfiltration
- File role
- tooling
- Source
- .github/workflows/triage-project-owner-request.yml:51
zizmor reported artipacked
Expected behavior · high confidence
This automation runs a daily retry script using a standard, read-mostly GitHub token. It does not save any files or secrets to artifacts or caches, so there is no risk of credentials leaking through persisted workflow outputs.
Technical evidence
Scanner reason: zizmor matched workflow-security rule artipacked in this repository.
Contextual assessment: The workflow checks out the repository, sets up Node.js, and runs a project script with the ambient GITHUB_TOKEN passed via environment. Permissions are scoped to contents read, issues read, and actions write. There is no artifact upload, cache save, or other step that would persist the token or repository secrets beyond the ephemeral runner. The artipacked heuristic fired on the checkout step, but no credential persistence path exists in this workflow.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- artipacked
- File role
- tooling
- Source
- .github/workflows/retry-project-submission-enrichment.yml:22-23
zizmor reported artipacked
Expected behavior · high confidence
The scanner flagged a potential risk of leaking GitHub credentials through saved workflow files. However, this workflow does not save or upload the project files anywhere, so the risk does not apply here.
Technical evidence
Scanner reason: zizmor matched workflow-security rule artipacked in this repository.
Contextual assessment: The scanner flags a theoretical risk where the GitHub Actions token persisted by actions/checkout in the .git directory could be exfiltrated if the workspace is uploaded as an artifact or cached. This workflow does not upload any artifacts and only caches npm dependencies via setup-node, which does not include the workspace directory. Therefore, the credential persistence risk is not present.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- artipacked
- File role
- tooling
- Source
- .github/workflows/ci.yml:97-98
zizmor reported artipacked
Expected behavior · high confidence
The scanner warned about a potential credential leak when downloading the full git history. Because this workflow never saves the downloaded files as a workflow artifact, there is no way for the credentials to be exposed through this path.
Technical evidence
Scanner reason: zizmor matched workflow-security rule artipacked in this repository.
Contextual assessment: The scanner flags actions/checkout with fetch-depth: 0 due to the theoretical risk of the persisted GITHUB_TOKEN being leaked if the workspace is cached or uploaded as an artifact. This workflow performs builds and tests but does not upload the workspace as an artifact. The only caching enabled is for npm dependencies, which does not include the git workspace. The risk is not applicable.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- artipacked
- File role
- tooling
- Source
- .github/workflows/ci.yml:26-29
zizmor reported artipacked
Expected behavior · high confidence
The scanner warns that saving login details during checkout could leak if files are later shared as downloadable artifacts. This workflow needs those saved credentials to push report changes back to the repository, and no step that uploads shared artifacts is present in the supplied source, so the warned-about risk does not apply here.
Technical evidence
Scanner reason: zizmor matched workflow-security rule artipacked in this repository.
Contextual assessment: The artipacked rule flags the combination of actions/checkout with default persist-credentials alongside artifact uploads. The checkout step here uses a SHA-pinned v7 action with fetch-depth 0 against the main branch. The job requires git push to commit imported reports, so credential persistence in the local git configuration is necessary for its stated purpose. The visible source context contains no upload-artifact step, and the scanner itself reports low confidence. Without an artifact upload that exposes the workspace or git directory, the token-persistence risk does not materialize.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- artipacked
- File role
- tooling
- Source
- .github/workflows/import-tavernkeeper-reports.yml:38-42
zizmor reported template-injection
Expected behavior · high confidence
The workflow passes the repository's default branch name to an API query. Because that name comes from the repository settings and not from any user submission, it cannot be used to inject commands.
Technical evidence
Scanner reason: zizmor matched workflow-security rule template-injection in this repository.
Contextual assessment: The expression at line 100 interpolates github.event.repository.default_branch into a GitHub CLI API parameter. This value is repository configuration metadata, not user-controlled input from issue or pull-request content. The scanner flags any template expression in a run block, but this particular source is not attacker-influenced and cannot cause code injection.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- template-injection
- File role
- tooling
- Source
- .github/workflows/publish-project-transaction.yml:100
OpenGrep reported tavernkeeper.credential-exfiltration.javascript-secret-to-network
Expected behavior · high confidence
A scanner flagged this file because it mentions a secret and makes a network request in the same place. Looking at what the code actually does, the request goes to GitHub's official API and the token is used only to authenticate those calls. Nothing is being leaked.
Technical evidence
Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.credential-exfiltration.javascript-secret-to-network in this repository.
Contextual assessment: The static-analysis rule flagged the co-occurrence of a credential source and a network call. Examining the actual data flow, the only network sink is a fetch to the official GitHub API hostname, and the credential is used solely as a Bearer token in that request's headers. The script dispatches GitHub Actions workflows and reads issue comments on the project's own repository. There is no secondary destination, no exfiltration path, and no concealment.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- opengrep 1.26.0
- Rule
- tavernkeeper.credential-exfiltration.javascript-secret-to-network
- File role
- tooling
- Source
- scripts/submissions/retry-fork-dependencies.mjs:100-110
zizmor reported template-injection
Expected behavior · high confidence
The workflow reads the repository's own default branch name and passes it to a planning script. This value is set by the repository owner and cannot be manipulated by outside contributors, so it poses no injection risk.
Technical evidence
Scanner reason: zizmor matched workflow-security rule template-injection in this repository.
Contextual assessment: The expression ${{ github.event.repository.default_branch }} at line 274 is expanded into a Node script string. This context value is the default branch of the repository that owns the workflow, controlled by the repository maintainer, not by external issue submitters or fork contributors. It is a standard GitHub Actions context reference used to pass the repository's own default branch into planning logic. There is no attacker-controlled data path reaching this expression.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- template-injection
- File role
- tooling
- Source
- .github/workflows/publish-project-transaction.yml:274
zizmor reported template-injection
Expected behavior · high confidence
The workflow uses the repository's own default branch name to decide which branch to run a follow-up workflow on. That name is set by the repository owner, not by outside users, so it cannot be abused to inject commands.
Technical evidence
Scanner reason: zizmor matched workflow-security rule template-injection in this repository.
Contextual assessment: The flagged expression expands github.event.repository.default_branch, which is the default branch name of the repository the workflow runs in. This is repository-owner-controlled metadata, not attacker-controlled input such as an issue title, comment body, or fork-supplied payload. The expanded value is passed as the --ref argument to a gh workflow run command targeting another workflow in the same repository. There is no data flow from an untrusted external actor into a shell evaluation context, so no code injection is achievable.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- template-injection
- File role
- tooling
- Source
- .github/workflows/project-submission-lifecycle.yml:134
Credential access and network transmission in one file
Expected behavior · high confidence
The same credential and network usage described above is the only such flow in this file: a GitHub token is sent to GitHub's API to fetch reaction data, which is then saved locally. This is consistent with the project's documented automation.
Technical evidence
Scanner reason: A credential source and an outbound network operation were detected in the same file.
Contextual assessment: This candidate flags the co-location of credential access and a network sink in the same file. The credential is process.env.GITHUB_TOKEN and the sole network destination is api.github.com using GitHub's documented API versioning and Accept headers. The data returned is written to the local data/snapshots directory. No alternate destination, obfuscation, or secondary exfiltration path is present. The flow matches the project's stated automated snapshot refresh purpose.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- tavernkeeper 3
- Rule
- credential-exfiltration
- File role
- tooling
- Source
- scripts/kits/refresh-reactions.mjs:142
Gitleaks reported generic-api-key
Expected behavior · high confidence
The scanner saw a long string of letters and numbers and thought it might be a secret password or key. It is actually a fixed version identifier for a GitHub automation tool, used in a test that checks the project's automation is properly locked to specific versions. No secret is present.
Technical evidence
Scanner reason: Gitleaks matched secret-detection rule generic-api-key in this repository.
Contextual assessment: The flagged value is a 40-character hex commit SHA used to pin the actions/create-github-app-token GitHub Action in a test file that validates workflow action pinning. It is not a credential, API key, or secret. The surrounding code maps action names to pinned commit SHAs and is part of a unit test that reads GitHub workflow YAML files to verify pinning practices. Gitleaks matched the hex string against a generic API-key pattern, producing a false positive.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- gitleaks 8.30.1
- Rule
- generic-api-key
- File role
- test
- Source
- tests/unit/workflows.test.ts:15
zizmor reported artipacked
Expected behavior · high confidence
This automated workflow runs only when a maintainer manually starts it, uses pinned versions of official actions, and does not save any files or data that could trap credentials. The only secret is a short-lived, repository-scoped token that GitHub generates fresh for each run and destroys afterward. There is no realistic way for a credential to leak here.
Technical evidence
Scanner reason: zizmor matched workflow-security rule artipacked in this repository.
Contextual assessment: The zizmor artipacked heuristic flagged the checkout step, but the full workflow shows no artifact upload steps, no cache persistence, and no pull-request trigger. The workflow is manually dispatched only. Both actions are pinned to full commit hashes. The only secret used is the default ephemeral GITHUB_TOKEN, scoped to contents read, issues write, and actions write, which matches the stated purpose of validating submissions and dispatching a downstream workflow. The theoretical concern of token persistence in the runner's git config does not apply because the runner environment is destroyed after job completion and no artifact or cache step captures it.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- artipacked
- File role
- tooling
- Source
- .github/workflows/triage-submission.yml:25-26
zizmor reported artipacked
Expected behavior · medium confidence
The scanner worried that checkout leaves login credentials sitting where they could be stolen. In this workflow, only trusted maintainers can start it, it runs on the main branch, and no step is shown that would package up the working folder for outsiders. The credentials only exist on the temporary build machine and are discarded when it shuts down. They are also needed so the workflow can actually open the review pull request it is designed to create.
Technical evidence
Scanner reason: zizmor matched workflow-security rule artipacked in this repository.
Contextual assessment: The flagged step is a standard actions/checkout with full history on main. The artipacked pattern requires two conditions: credential persistence in the local git config AND a subsequent exposure path (typically upload-artifact of the workspace, or commit of .git internals to a context reachable by an untrusted actor). The provided evidence shows neither: the trigger is workflow_dispatch only, gated by maintainer labels on main, and the visible portion contains no upload-artifact step. The persisted token lives only in the ephemeral runner's git configuration, which is destroyed when the job ends. The workflow's stated purpose is creating review pull requests, which legitimately requires write git credentials, so disabling persist-credentials would break the PR-creation flow.
Impact: low · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- artipacked
- File role
- tooling
- Source
- .github/workflows/generate-project-submission.yml:39-43
zizmor reported excessive-permissions
Expected behavior · high confidence
This automation has the ability to trigger other automated processes in the repository. The project says this is needed to publish catalog updates after reports are imported. The permission is listed individually rather than as a blanket grant, and the workflow only runs on a fixed schedule or from the main branch.
Technical evidence
Scanner reason: zizmor matched workflow-security rule excessive-permissions in this repository.
Contextual assessment: The workflow grants actions: write at the top level, which is required to dispatch downstream workflows. The project documentation states that a successful snapshot commit dispatches a Pages deployment, and the job outputs reference a commit step that performs that dispatch. The permission is declared explicitly and individually rather than via a blanket write-all grant. The job runs only on schedule or against the main branch and is gated by a concurrency lock. No evidence indicates the permission is used beyond its stated purpose.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- excessive-permissions
- File role
- tooling
- Source
- .github/workflows/import-tavernkeeper-reports.yml:19
zizmor reported template-injection
Expected behavior · high confidence
The value passed into the command is a GitHub issue number, which is always a number and cannot be manipulated by issue authors.
Technical evidence
Scanner reason: zizmor matched workflow-security rule template-injection in this repository.
Contextual assessment: Same issue_number interpolation pattern. The value derives from the immutable GitHub-assigned issue number and cannot carry injection payloads.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- template-injection
- File role
- tooling
- Source
- .github/workflows/admit-issue.yml:59
Credential access and network transmission in one file
Expected behavior · high confidence
The scanner noticed that a token and a network request appear in the same file. Looking at the actual code, the token is the standard GitHub automation credential and the request goes to GitHub's official API for creating issues and triggering workflows. This is normal and intended behavior for a CI maintenance script.
Technical evidence
Scanner reason: A credential source and an outbound network operation were detected in the same file.
Contextual assessment: The candidate flags the co-occurrence of credential access and a network call in the same file. The credential is GITHUB_TOKEN from the environment, and the sole network destination is the official GitHub API. The token authenticates repository operations consistent with the file's stated tooling purpose. There is no evidence of redirection, logging, or transmission to any endpoint other than the GitHub API.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- tavernkeeper 3
- Rule
- credential-exfiltration
- File role
- tooling
- Source
- scripts/submissions/backfill-fork-dependencies.mjs:289