RepoTrust

github/gh-aw-firewall

GitHub Agentic Workflows Firewall

https://github.com/github/gh-aw-firewall · commit a7a2bcad920d · scored 2026-11-14 · scoring prov-4+qual-2+sec-2

RepoTrust ai badge RepoTrust quality badge RepoTrust security badge

Dispute this score or request a re-score Full report JSON

Scores

Pillar Score Signal Confidence Coverage
AI provenance (estimated AI-generated share) 96 explicit 95% 100%
Code quality 74 adequate 90% 100%
Security 46 poor 85% 100%

AI provenance

Explicit AI attribution on 96% of first-party code added; an estimated 96% including velocity signals.

AI tool Attributed commits Lines added
GitHub Copilot coding agent 2,383 554,713
Claude Code 203 118,829

Current source lines last changed by AI-attributed commits: 174,850 of 179,024.

Findings per 1,000 lines AI-attributed Other Ratio
Quality 1.132 0.479 2.36x
Security 1.584 4.312 0.37x
Month Lines added Attributed to AI
2025-12 9,159 100%
2026-01 96,308 100%
2026-02 13,236 98%
2026-03 12,823 100%
2026-04 14,909 99%
2026-05 76,115 100%
2026-06 50,879 99%
2026-07 46,574 86%
2026-08 79,434 100%
2026-09 67,104 97%
2026-10 149,793 96%
2026-11 62,814 100%

Evidence

AI provenance describes how code was produced; it is not a quality judgment. Unless attribution is explicit, these are signals consistent with AI generation, not proof. Squash/rebase workflows, imported code, and rewritten history reduce accuracy.

Code quality

Code quality is adequate: test-to-source ratio 1.36, CI runs tests; 28% of function code in complex or long functions; 8% duplicated lines. Weakest area: complexity.

Area Score
Complexity (lizard) 43
Duplication 63
Code smells (Opengrep) 70
Tests and CI 100
Documentation 80
Type safety 97
Process (Scorecard review/maintenance) n/a

Most complex functions:

Security

Security posture is poor: 14 known vulnerabilities in 9 dependencies; 27 high-severity SAST findings; 20 high-severity workflow issues. Weakest area: ci actions.

Area Score
Secrets (gitleaks, tree + history) 44
Static analysis (Opengrep) 39
Vulnerable dependencies (OSV) 64
CI workflows (zizmor) 0
Posture (policy, updates, signing, lockfiles) 100
OpenSSF Scorecard n/a

Top findings

Severity Finding Location
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] .claude/skills/awf-debug-tools/scripts/common.py:360
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] .claude/skills/awf-debug-tools/scripts/common.py:368
high opengrep/dockerfile.security.missing-user-entrypoint: By not specifying a USER, a program in the container may run as 'root'. This is a security hazard. If an attacker can control a process running as root, they may have control over the container. Ensure that the last USER in a Dockerfile is a USER other than 'root'. [confidence medium] containers/agent/Dockerfile:310
high opengrep/dockerfile.security.missing-user: By not specifying a USER, a program in the container may run as 'root'. This is a security hazard. If an attacker can control a process running as root, they may have control over the container. Ensure that the last USER in a Dockerfile is a USER other than 'root'. [confidence medium] containers/dind-ubuntu/Dockerfile:34
high opengrep/dockerfile.security.last-user-is-root: The last user in the container is 'root'. This is a security hazard because if an attacker gains control of the container they will have root access. Switch back to another user after running commands as 'root'. [confidence medium] containers/enclave/Dockerfile:137
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'TimeoutExpired' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] containers/enclave/agent-entrypoint.py:1146
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'TimeoutExpired' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] containers/enclave/agent-entrypoint.py:1176
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'TimeoutExpired' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] containers/enclave/agent-entrypoint.py:1181
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'Popen' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] containers/enclave/agent-entrypoint.py:1398
high opengrep/python.lang.security.audit.dangerous-subprocess-use-tainted-env-args: Detected subprocess function 'Popen' with user controlled data. A malicious actor could leverage this to perform command injection. You may consider using 'shlex.quote()'. [confidence medium] containers/enclave/agent-entrypoint.py:1399
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'CompletedProcess' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] containers/enclave/agent-entrypoint.py:1426
high opengrep/python.lang.security.audit.dangerous-subprocess-use-tainted-env-args: Detected subprocess function 'CompletedProcess' with user controlled data. A malicious actor could leverage this to perform command injection. You may consider using 'shlex.quote()'. [confidence medium] containers/enclave/agent-entrypoint.py:1426
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'CompletedProcess' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] containers/enclave/agent-entrypoint.py:1444
high opengrep/python.lang.security.audit.dangerous-subprocess-use-tainted-env-args: Detected subprocess function 'CompletedProcess' with user controlled data. A malicious actor could leverage this to perform command injection. You may consider using 'shlex.quote()'. [confidence medium] containers/enclave/agent-entrypoint.py:1445
high opengrep/python.lang.security.audit.dangerous-os-exec-audit: Found dynamic content when spawning a process. This is dangerous if external data can reach this function call because it allows a malicious actor to execute commands. Ensure no external data reaches here. [confidence low] guest/cloud-hypervisor/verify-guest-engine.py:128
high opengrep/go.lang.security.audit.dangerous-syscall-exec: Detected non-static command inside Exec. Audit the input to 'syscall.Exec'. If unverified user data can reach this call site, this is a code injection vulnerability. A malicious actor can inject a malicious script to execute arbitrary code. [confidence low] guest/microvm-supervisor/runtime_linux.go:72
high opengrep/go.lang.security.audit.dangerous-exec-command: Detected non-static command inside Command. Audit the input to 'exec.Command'. If unverified user data can reach this call site, this is a code injection vulnerability. A malicious actor can inject a malicious script to execute arbitrary code. [confidence low] guest/microvm-supervisor/runtime_linux.go:344
high opengrep/go.lang.security.audit.dangerous-exec-command: Detected non-static command inside Command. Audit the input to 'exec.Command'. If unverified user data can reach this call site, this is a code injection vulnerability. A malicious actor can inject a malicious script to execute arbitrary code. [confidence low] guest/microvm-supervisor/runtime_linux.go:542
high opengrep/javascript.lang.security.detect-child-process: Detected calls to child_process from a function argument cmd. This could lead to a command injection if the input is user controllable. Try to avoid calls to child_process, and if it is needed ensure user input is correctly sanitized or sandboxed. [confidence low] scripts/ci/benchmark-performance.ts:60
high opengrep/javascript.lang.security.detect-child-process: Detected calls to child_process from a function argument name. This could lead to a command injection if the input is user controllable. Try to avoid calls to child_process, and if it is needed ensure user input is correctly sanitized or sandboxed. [confidence low] scripts/ci/benchmark-performance.ts:194
high opengrep/javascript.lang.security.detect-child-process: Detected calls to child_process from a function argument command. This could lead to a command injection if the input is user controllable. Try to avoid calls to child_process, and if it is needed ensure user input is correctly sanitized or sandboxed. [confidence low] scripts/ci/enclave-smoke/commands.js:9
high opengrep/javascript.lang.security.detect-child-process: Detected calls to child_process from a function argument input. This could lead to a command injection if the input is user controllable. Try to avoid calls to child_process, and if it is needed ensure user input is correctly sanitized or sandboxed. [confidence low] scripts/ci/nvx-matched-runtime-adapter.ts:504
high opengrep/javascript.lang.security.detect-child-process: Detected calls to child_process from a function argument input. This could lead to a command injection if the input is user controllable. Try to avoid calls to child_process, and if it is needed ensure user input is correctly sanitized or sandboxed. [confidence low] scripts/ci/nvx-matched-runtime-adapter.ts:561
high opengrep/javascript.lang.security.detect-child-process: Detected calls to child_process from a function argument command. This could lead to a command injection if the input is user controllable. Try to avoid calls to child_process, and if it is needed ensure user input is correctly sanitized or sandboxed. [confidence low] src/nvx/launch-executor.ts:112
high opengrep/javascript.lang.security.detect-child-process: Detected calls to child_process from a function argument request. This could lead to a command injection if the input is user controllable. Try to avoid calls to child_process, and if it is needed ensure user input is correctly sanitized or sandboxed. [confidence low] src/nvx/one-shot-process.ts:28

Static signals only: the scorer never runs the project's code. Secret findings are pattern matches that were not verified, and secret values are never stored.

Distribution signals

Signals consistent with a repository that exists to distribute a download. They are heuristics, not a verdict; release files were not downloaded or inspected.

Repository profile

Language Lines
TypeScript 273,235
JavaScript 117,646
Shell 14,081
Go 12,317
Python 5,131
Rust 486
C 463

Embed a badge

Maintainers can show these in a README. Badges update when the repository is re-scored.

[![RepoTrust ai](https://repotrust.synapticcyber.com/badge/github.com/github/gh-aw-firewall/ai.svg)](https://repotrust.synapticcyber.com/r/github.com/github/gh-aw-firewall/)
[![RepoTrust quality](https://repotrust.synapticcyber.com/badge/github.com/github/gh-aw-firewall/quality.svg)](https://repotrust.synapticcyber.com/r/github.com/github/gh-aw-firewall/)
[![RepoTrust security](https://repotrust.synapticcyber.com/badge/github.com/github/gh-aw-firewall/security.svg)](https://repotrust.synapticcyber.com/r/github.com/github/gh-aw-firewall/)