RepoTrust

gitlab-org/cli

A GitLab CLI tool bringing GitLab to your command line

https://gitlab.com/gitlab-org/cli · commit 71d2f9135352 · scored 2026-11-13 · scoring prov-3+qual-1+sec-1

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) 2 explicit 95% 100%
Code quality 81 strong 90% 100%
Security 63 weak 85% 100%

AI provenance

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

AI tool Attributed commits Lines added
Claude Code 80 5,686
Month Lines added Attributed to AI
2025-12 3,712 0%
2026-01 13,378 0%
2026-02 9,640 0%
2026-03 11,753 0%
2026-04 4,666 0%
2026-05 16,542 0%
2026-06 11,964 1%
2026-07 9,953 1%
2026-08 20,572 1%
2026-09 23,792 2%
2026-10 41,099 10%
2026-11 28,138 3%

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 strong: test-to-source ratio 1.39, CI runs tests; 15% of function code in complex or long functions; 12% duplicated lines. Weakest area: duplication.

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

Most complex functions:

Security

Security posture is weak: 0 possible secret(s) in the tree, 3 only in history; 5 known vulnerabilities in 2 dependencies; 18 high-severity SAST findings. Weakest area: secrets.

Area Score
Secrets (gitleaks, tree + history) 17
Static analysis (Opengrep) 93
Vulnerable dependencies (OSV) 90
CI workflows (zizmor) n/a
Posture (policy, updates, signing, lockfiles) 60
OpenSSF Scorecard n/a

Top findings

Severity Finding Location
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] Dockerfile:19
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] cmd/glab/main.go:138
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] internal/browser/browser.go:46
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] internal/cmdutils/executor.go:36
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] internal/cmdutils/executor.go:45
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] internal/cmdutils/executor.go:51
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] internal/commands/cluster/agent/bootstrap/exec.go:41
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] internal/commands/cluster/agent/bootstrap/exec.go:51
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] internal/commands/duo/cli/execute_unix.go:26
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] internal/commands/duo/cli/execute_windows.go:18
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] internal/commands/mcp/serve/server.go:639
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] internal/commands/orbit/execute_unix.go:18
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] internal/commands/orbit/execute_windows.go:23
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] internal/config/custom_headers.go:64
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] internal/dependencyfirewall/gomodproxy/fetcher.go:68
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] internal/git/git_runner.go:304
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] internal/iostreams/iostreams.go:289
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] internal/iostreams/iostreams.go:625
medium gitleaks/private-key: Possible private-key secret in history (commit c707d7d3f7); removed from the current tree but still retrievable .gitlab-ci.yml:55
medium gitleaks/private-key: Possible private-key secret in history (commit 7705e8aa64); removed from the current tree but still retrievable .github/workflows/go.yml:58
medium gitleaks/private-key: Possible private-key secret in history (commit 9255e4af53); removed from the current tree but still retrievable .travis.yml:28
medium opengrep/go.lang.security.potential-dos-via-decompression-bomb: Detected a possible denial-of-service via a zip bomb attack. By limiting the max bytes read, you can mitigate this attack. io.CopyN() can specify a size. [confidence low] internal/binarymgr/extract.go:80
medium opengrep/go.lang.security.shared-url-struct-mutation: Shared URL struct may have been accidentally mutated. Ensure that this behavior is intended. [confidence low] internal/cmdutils/url_parser.go:167
medium opengrep/go.lang.security.shared-url-struct-mutation: Shared URL struct may have been accidentally mutated. Ensure that this behavior is intended. [confidence low] internal/commands/api/http.go:31
medium opengrep/go.lang.security.audit.crypto.use-of-sha1: Detected SHA1 hash algorithm which is considered insecure. SHA1 is not collision resistant and is therefore not suitable as a cryptographic signature. Use SHA256 or SHA3 instead. [confidence medium] internal/commands/mr/mrutils/position.go:235

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
Go 249,258
Shell 461
JavaScript 202

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/gitlab.com/gitlab-org/cli/ai.svg)](https://repotrust.synapticcyber.com/r/gitlab.com/gitlab-org/cli/)
[![RepoTrust quality](https://repotrust.synapticcyber.com/badge/gitlab.com/gitlab-org/cli/quality.svg)](https://repotrust.synapticcyber.com/r/gitlab.com/gitlab-org/cli/)
[![RepoTrust security](https://repotrust.synapticcyber.com/badge/gitlab.com/gitlab-org/cli/security.svg)](https://repotrust.synapticcyber.com/r/gitlab.com/gitlab-org/cli/)