RepoTrust

Leaderboard github.com

simon141/pabloagent

Pablo Agent is an AI chat application that uses Claude Code, Codex and other CLIs over SSH as a backend.

  • View repository ↗
  • Rust
  • ★ 9
  • commit bbb339979aee
  • scored 2026-11-14
  • scoring prov-5+qual-2+sec-2

AI provenance

10%

explicit

Confidence
95%
Coverage
100%

Estimated share of AI-generated code. Explicit attribution is a lower bound.

Code quality

77/100

adequate

Confidence
90%
Coverage
100%

Complexity, duplication, lint density, tests, CI, docs and review process.

Security

52/100

weak

Confidence
85%
Coverage
100%

Secrets, static analysis, vulnerable dependencies, CI and supply-chain posture.

AI provenance

10% explicit

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

How the score is built

  • Explicitly attributed share10%
  • Unattributed share in AI-pace bursts0%
  • Estimated AI-generated share10%
  • AI tool configuration files2
  • Work sessions at AI pace0
  • Releases at AI pace0
  • Coding-style index (1.0+ means possible)0.30

Attributed AI tools

ToolCommitsLines addedFirst seenLast seen
Claude Code452,5802026-08-302026-10-23

Lines added per month all AI-attributed share

  1. 2026-0822,650 · 1% AI
  2. 2026-093,642 · 53% AI
  3. 2026-10412 · 100% AI

Findings in AI-attributed lines vs the rest

From git blame: 1,826 lines trace to AI-attributed commits, 19,546 to others. Reported, not scored.

Findings per 1,000 linesAI-attributedOtherRatio
Code quality0.000.560.00×
Security0.552.050.27×

Evidence by analyzer

Explicit AI attributionok26 items
attributed_commit_share
42.9%
attributed_commits
45
attributed_loc
2,580
attributed_loc_share
9.7%
commits
105
effective_loc
26,704
tools_detected
1
AI tool configurationok2 items
artifacts
2
earliest_adoption
2026-08-28
tools_configured
2
workflow_agents
0
Commit velocityok
excluded_import_loc
22,343
flagged_loc
0
flagged_loc_share
0.0%
flagged_units
0
max_loc_per_hour
239.65
measured_loc
4,361
median_loc_per_hour
64.65
pr_timed_units
0
pre_ai_era_burst_loc
0
pre_ai_era_bursts
0
pre_ai_era_measured_loc
0
work_units
43
Release velocityok
flagged_releases
0
max_loc_per_day
532.40
releases
4
Coding styleok
count:assistant_voice
0
count:emoji_in_code
13
count:narrated_steps
0
count:placeholder
0
files:assistant_voice
0
files:emoji_in_code
4
files:narrated_steps
0
files:placeholder
0
index
0.30
lines_scanned
21,372
per_kloc:assistant_voice
0
per_kloc:emoji_in_code
0.61
per_kloc:narrated_steps
0
per_kloc:placeholder
0
Findings in AI-written linesok
ai_lines
1,826
blame_failures
0
files_blamed
44
other_lines
19,546
quality:ai_findings
0
quality:ai_per_kloc
0
quality:other_findings
11
quality:other_per_kloc
0.56
quality:ratio
0
security:ai_findings
1
security:ai_per_kloc
0.55
security:other_findings
40
security:other_per_kloc
2.05
security:ratio
0.27

Code quality

77 adequate

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

How the score is built

  • Complexity62
  • Duplication83
  • Lint and smells89
  • Tests and CI79
  • Documentation65
  • Type safety100
  • Review processnot measured

Evidence by analyzer

Complexity (lizard)ok10 items
complex_functions
31
function_nloc
14,594
functions
1,221
long_functions
7
many_param_functions
1
mean_ccn
3.22
p90_ccn
7
risky_nloc_share
16.1%
Duplication (jscpd)ok10 items
compared_lines
16,426
duplicated_lines
514
duplicated_share
3.1%
files
44
Lintok
category:best-practice
1
category:correctness
10
findings
11
scanned_lines
21,372
weighted_findings
10.25
Tests and CIok5 items
  • CI config: .github/workflows/android-release.yml .github/workflows/android-release.yml
  • CI config: .github/workflows/checks.yml .github/workflows/checks.yml
  • CI config: .github/workflows/pr-build-downloads.yml .github/workflows/pr-build-downloads.yml
  • CI runs tests (go test, cargo test)
  • CI runs linters (biome, clippy, rustfmt, cargo fmt)
check:ci_present
yes
check:ci_runs_lint
yes
check:ci_runs_tests
yes
check:has_tests
yes
check:test_ratio
no
check:tests_cochange
no
ci_files
3
cochange_commits
76
cochange_share
13.2%
source_lines
21,372
test_lines
3,759
test_ratio
0.18
Documentationok2 items
  • README.md README.md
  • LICENSE LICENSE
check:changelog
no
check:contributing
no
check:license
yes
check:readme
yes
readme_lines
234
Type safetyok1 item
  • TypeScript strict type checking: tsconfig.json tsconfig.json
check:low_escape_density
yes
check:strict_config
yes
escapes
1
escapes_per_kloc
0.09

Security

52 weak

Security posture is weak: 35 known vulnerabilities in 18 dependencies; 8 high-severity SAST findings; 33 high-severity workflow issues. Weakest area: posture.

How the score is built

  • Secrets97
  • Static analysis (SAST)79
  • Vulnerable dependencies32
  • CI workflows0
  • Security posture0
  • OpenSSF Scorecardnot measured

Evidence by analyzer

OpenSSF Scorecardskipped

no published OpenSSF Scorecard result for this repo

Package registriesok
checked
22
declared
22
lookup_errors
0
missing
0
recent
0
Secrets (gitleaks)ok
secrets_current
0
secrets_history
0
secrets_low_confidence
0
secrets_nonprod
1
Static analysis (opengrep)ok
findings
41
findings_high
8
findings_low
9
findings_medium
24
parse_errors
3
scanned_lines
21,372
weighted_findings
14.25
Dependencies (osv-scanner)ok
penalty
69
vulnerabilities
35
vulnerable_packages
18
vulns_critical
0
vulns_high
4
vulns_low
7
vulns_medium
11
vulns_unknown
13
CI workflows (zizmor)ok
findings
34
findings_high
33
findings_low
1
findings_medium
0
penalty
325
workflows
3
Security postureok
check:dependency_updates
no
check:lockfiles
yes
check:security_policy
no
check:signed_commits
no
signed_commit_share
0.9%
unpinned_manifests
0
Release downloadsok6 items
binary_assets
43
signals
2
suspicious
0

Findings

45 high58 medium19 low

SeverityRuleLocationMessageTool
high zizmor/unpinned-uses .github/workflows/android-release.yml:119 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/cache-poisoning .github/workflows/android-release.yml:123 runtime artifacts potentially vulnerable to a cache poisoning attack [confidence low] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/android-release.yml:123 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/cache-poisoning .github/workflows/android-release.yml:131 runtime artifacts potentially vulnerable to a cache poisoning attack [confidence low] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/android-release.yml:131 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/android-release.yml:181 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/android-release.yml:197 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/cache-poisoning .github/workflows/android-release.yml:201 runtime artifacts potentially vulnerable to a cache poisoning attack [confidence low] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/android-release.yml:201 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/cache-poisoning .github/workflows/android-release.yml:211 runtime artifacts potentially vulnerable to a cache poisoning attack [confidence low] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/android-release.yml:211 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/android-release.yml:257 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/android-release.yml:26 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/android-release.yml:269 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/cache-poisoning .github/workflows/android-release.yml:273 runtime artifacts potentially vulnerable to a cache poisoning attack [confidence low] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/android-release.yml:273 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/cache-poisoning .github/workflows/android-release.yml:285 runtime artifacts potentially vulnerable to a cache poisoning attack [confidence low] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/android-release.yml:285 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/cache-poisoning .github/workflows/android-release.yml:30 runtime artifacts potentially vulnerable to a cache poisoning attack [confidence low] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/android-release.yml:30 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/android-release.yml:315 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/android-release.yml:333 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/android-release.yml:343 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/android-release.yml:35 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/cache-poisoning .github/workflows/android-release.yml:45 runtime artifacts potentially vulnerable to a cache poisoning attack [confidence low] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/android-release.yml:45 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/android-release.yml:92 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/checks.yml:15 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/checks.yml:19 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/checks.yml:43 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/checks.yml:52 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/pr-build-downloads.yml:19 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/dangerous-triggers .github/workflows/pr-build-downloads.yml:4 use of fundamentally insecure workflow trigger [confidence medium] CI workflows (zizmor)
high osv/GHSA-587h-7wmj-h5pm package-lock.json [email protected] (npm) is affected by GHSA-587h-7wmj-h5pm Dependencies (osv-scanner)
high osv/GHSA-68fv-2mgg-jv7q package-lock.json [email protected] (npm) is affected by GHSA-68fv-2mgg-jv7q Dependencies (osv-scanner)
high osv/GHSA-47hw-gvq5-r2gm src-tauri/Cargo.lock [email protected] (crates.io) is affected by RUSTSEC-2026-0492, GHSA-47hw-gvq5-r2gm Dependencies (osv-scanner)
high osv/GHSA-vp5q-ff62-jwqv src-tauri/Cargo.lock [email protected] (crates.io) is affected by RUSTSEC-2026-0495, GHSA-vp5q-ff62-jwqv Dependencies (osv-scanner)
high opengrep/javascript.browser.security.insecure-document-method src/main.ts:1538 User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low] Static analysis (opengrep)
high opengrep/javascript.browser.security.insecure-innerhtml src/main.ts:1538 User controlled data in a `el.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low] Static analysis (opengrep)
high opengrep/javascript.browser.security.insecure-document-method src/main.ts:3292 User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low] Static analysis (opengrep)
high opengrep/javascript.browser.security.insecure-innerhtml src/main.ts:3292 User controlled data in a `model.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low] Static analysis (opengrep)
high opengrep/javascript.browser.security.insecure-document-method src/transcript.ts:1742 User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low] Static analysis (opengrep)
high opengrep/javascript.browser.security.insecure-innerhtml src/transcript.ts:1742 User controlled data in a `body.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low] Static analysis (opengrep)
high opengrep/javascript.browser.security.insecure-document-method src/transcript.ts:642 User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low] Static analysis (opengrep)
high opengrep/javascript.browser.security.insecure-innerhtml src/transcript.ts:642 User controlled data in a `el.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low] Static analysis (opengrep)
medium opengrep/javascript.lang.correctness.no-stringify-keys scripts/check-rollout.mjs:1126 JSON stringify does not produce a stable key ordering, and should not be relied on for producing object keys. Consider using json-stable-stringify instead. Lint
medium opengrep/javascript.lang.correctness.no-stringify-keys scripts/check-rollout.mjs:1132 JSON stringify does not produce a stable key ordering, and should not be relied on for producing object keys. Consider using json-stable-stringify instead. Lint
medium opengrep/javascript.lang.correctness.no-stringify-keys scripts/check-rollout.mjs:1180 JSON stringify does not produce a stable key ordering, and should not be relied on for producing object keys. Consider using json-stable-stringify instead. Lint
medium opengrep/javascript.lang.correctness.no-stringify-keys scripts/check-rollout.mjs:1187 JSON stringify does not produce a stable key ordering, and should not be relied on for producing object keys. Consider using json-stable-stringify instead. Lint
medium opengrep/javascript.lang.correctness.no-stringify-keys scripts/check-rollout.mjs:1210 JSON stringify does not produce a stable key ordering, and should not be relied on for producing object keys. Consider using json-stable-stringify instead. Lint
medium opengrep/javascript.lang.correctness.no-stringify-keys scripts/check-rollout.mjs:150 JSON stringify does not produce a stable key ordering, and should not be relied on for producing object keys. Consider using json-stable-stringify instead. Lint
medium opengrep/javascript.lang.correctness.no-stringify-keys scripts/check-rollout.mjs:334 JSON stringify does not produce a stable key ordering, and should not be relied on for producing object keys. Consider using json-stable-stringify instead. Lint
medium opengrep/javascript.lang.correctness.no-stringify-keys scripts/check-rollout.mjs:522 JSON stringify does not produce a stable key ordering, and should not be relied on for producing object keys. Consider using json-stable-stringify instead. Lint
medium opengrep/javascript.lang.correctness.no-stringify-keys scripts/check-rollout.mjs:674 JSON stringify does not produce a stable key ordering, and should not be relied on for producing object keys. Consider using json-stable-stringify instead. Lint
medium opengrep/bash.lang.best-practice.useless-cat src-tauri/src/turn.sh:264 Useless call to 'cat' in a pipeline. Use '<' and '>' for any command to read from a file or write to a file. Lint
medium osv/GHSA-698v-4r3x-3vcv package-lock.json [email protected] (npm) is affected by GHSA-698v-4r3x-3vcv Dependencies (osv-scanner)
medium osv/GHSA-r825-w8mm-5pxw package-lock.json [email protected] (npm) is affected by GHSA-r825-w8mm-5pxw Dependencies (osv-scanner)
medium osv/GHSA-rq7h-c2jc-7f22 package-lock.json [email protected] (npm) is affected by GHSA-rq7h-c2jc-7f22 Dependencies (osv-scanner)
medium osv/GHSA-35g8-35p8-c8fw src-tauri/Cargo.lock [email protected] (crates.io) is affected by GHSA-35g8-35p8-c8fw Dependencies (osv-scanner)
medium osv/GHSA-4p9f-7p9m-5vfg src-tauri/Cargo.lock [email protected] (crates.io) is affected by GHSA-4p9f-7p9m-5vfg Dependencies (osv-scanner)
medium osv/GHSA-4wc5-f2rc-q74m src-tauri/Cargo.lock [email protected] (crates.io) is affected by GHSA-4wc5-f2rc-q74m Dependencies (osv-scanner)
medium osv/GHSA-fw5c-8223-6h42 src-tauri/Cargo.lock [email protected] (crates.io) is affected by GHSA-fw5c-8223-6h42 Dependencies (osv-scanner)
medium osv/GHSA-g4mp-vgx3-xrvm src-tauri/Cargo.lock [email protected] (crates.io) is affected by GHSA-g4mp-vgx3-xrvm Dependencies (osv-scanner)
medium osv/GHSA-m65r-rprj-r5rg src-tauri/Cargo.lock [email protected] (crates.io) is affected by GHSA-m65r-rprj-r5rg Dependencies (osv-scanner)
medium osv/GHSA-w3jg-pjxf-73p4 src-tauri/Cargo.lock [email protected] (crates.io) is affected by GHSA-w3jg-pjxf-73p4 Dependencies (osv-scanner)
medium osv/GHSA-wrw7-89jp-8q8g src-tauri/Cargo.lock [email protected] (crates.io) is affected by RUSTSEC-2024-0429, GHSA-wrw7-89jp-8q8g Dependencies (osv-scanner)
medium osv/RUSTSEC-2024-0370 src-tauri/Cargo.lock [email protected] (crates.io) is affected by RUSTSEC-2024-0370 Dependencies (osv-scanner)
medium osv/RUSTSEC-2025-0075 src-tauri/Cargo.lock [email protected] (crates.io) is affected by RUSTSEC-2025-0075 Dependencies (osv-scanner)
medium osv/RUSTSEC-2025-0080 src-tauri/Cargo.lock [email protected] (crates.io) is affected by RUSTSEC-2025-0080 Dependencies (osv-scanner)
medium osv/RUSTSEC-2025-0081 src-tauri/Cargo.lock [email protected] (crates.io) is affected by RUSTSEC-2025-0081 Dependencies (osv-scanner)
medium osv/RUSTSEC-2025-0098 src-tauri/Cargo.lock [email protected] (crates.io) is affected by RUSTSEC-2025-0098 Dependencies (osv-scanner)
medium osv/RUSTSEC-2025-0100 src-tauri/Cargo.lock [email protected] (crates.io) is affected by RUSTSEC-2025-0100 Dependencies (osv-scanner)
medium osv/RUSTSEC-2026-0370 src-tauri/Cargo.lock [email protected] (crates.io) is affected by RUSTSEC-2026-0370 Dependencies (osv-scanner)
medium osv/RUSTSEC-2026-0371 src-tauri/Cargo.lock [email protected] (crates.io) is affected by RUSTSEC-2026-0371 Dependencies (osv-scanner)
medium osv/RUSTSEC-2026-0372 src-tauri/Cargo.lock [email protected] (crates.io) is affected by RUSTSEC-2026-0372 Dependencies (osv-scanner)
medium osv/RUSTSEC-2026-0385 src-tauri/Cargo.lock [email protected] (crates.io) is affected by RUSTSEC-2026-0385 Dependencies (osv-scanner)
medium osv/RUSTSEC-2026-0386 src-tauri/Cargo.lock [email protected] (crates.io) is affected by RUSTSEC-2026-0386 Dependencies (osv-scanner)
medium osv/RUSTSEC-2026-0387 src-tauri/Cargo.lock [email protected] (crates.io) is affected by RUSTSEC-2026-0387 Dependencies (osv-scanner)
medium osv/RUSTSEC-2026-0486 src-tauri/Cargo.lock [email protected] (crates.io) is affected by RUSTSEC-2026-0486 Dependencies (osv-scanner)
medium opengrep/javascript.jquery.security.audit.jquery-insecure-selector src/main.ts:213 User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low] Static analysis (opengrep)
medium opengrep/javascript.lang.security.html-in-template-string src/main.ts:3292 This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS).... Static analysis (opengrep)
medium opengrep/javascript.jquery.security.audit.jquery-insecure-selector src/main.ts:531 User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low] Static analysis (opengrep)
medium opengrep/javascript.jquery.security.audit.jquery-insecure-selector src/main.ts:540 User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low] Static analysis (opengrep)
medium opengrep/javascript.jquery.security.audit.jquery-insecure-selector src/main.ts:547 User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low] Static analysis (opengrep)
medium opengrep/javascript.lang.security.html-in-template-string src/transcript.ts:179 This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS).... Static analysis (opengrep)
medium opengrep/javascript.lang.security.html-in-template-string src/transcript.ts:185 This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS).... Static analysis (opengrep)
medium opengrep/javascript.lang.security.html-in-template-string src/transcript.ts:186 This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS).... Static analysis (opengrep)
medium opengrep/javascript.lang.security.html-in-template-string src/transcript.ts:266 This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS).... Static analysis (opengrep)
medium opengrep/javascript.lang.security.html-in-template-string src/transcript.ts:282 This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS).... Static analysis (opengrep)
medium opengrep/javascript.lang.security.html-in-template-string src/transcript.ts:389 This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS).... Static analysis (opengrep)
medium opengrep/javascript.lang.security.html-in-template-string src/transcript.ts:392 This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS).... Static analysis (opengrep)
medium opengrep/javascript.lang.security.html-in-template-string src/transcript.ts:395 This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS).... Static analysis (opengrep)
medium opengrep/javascript.lang.security.html-in-template-string src/transcript.ts:467 This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS).... Static analysis (opengrep)
medium opengrep/javascript.lang.security.html-in-template-string src/transcript.ts:474 This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS).... Static analysis (opengrep)
medium opengrep/javascript.lang.security.html-in-template-string src/transcript.ts:486 This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS).... Static analysis (opengrep)
medium opengrep/javascript.lang.security.audit.detect-redos src/transcript.ts:519 Detected the use of a regular expression `^\s*(?:[-*_]\s*){3,}$` which appears to be vulnerable to a Regular expression Denial-of-Service (ReDoS). For this reason, it is recommended to review the regex and ensure it is not vulnerable to... Static analysis (opengrep)
medium opengrep/javascript.lang.security.html-in-template-string src/transcript.ts:544 This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS).... Static analysis (opengrep)
medium opengrep/javascript.lang.security.audit.detect-redos src/transcript.ts:548 Detected the use of a regular expression `^\s*(?:[-*_]\s*){3,}$` which appears to be vulnerable to a Regular expression Denial-of-Service (ReDoS). For this reason, it is recommended to review the regex and ensure it is not vulnerable to... Static analysis (opengrep)
medium opengrep/javascript.lang.security.html-in-template-string src/transcript.ts:598 This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS).... Static analysis (opengrep)
medium opengrep/javascript.lang.security.html-in-template-string src/transcript.ts:624 This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS).... Static analysis (opengrep)
medium opengrep/javascript.lang.security.html-in-template-string src/transcript.ts:63 This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS).... Static analysis (opengrep)
medium opengrep/javascript.lang.security.html-in-template-string src/transcript.ts:643 This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS).... Static analysis (opengrep)
medium opengrep/javascript.lang.security.html-in-template-string src/transcript.ts:644 This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS).... Static analysis (opengrep)
low opengrep/javascript.lang.correctness.useless-assignment src/main.ts:4420 `input.style.height` is assigned twice; the first assignment is useless Lint
low zizmor/self-repository .github/workflows/android-release.yml:19 use GitHub's dedicated self-repository syntax [confidence high] CI workflows (zizmor)
low osv/GHSA-9jrq-w75r-8gcw package-lock.json [email protected] (npm) is affected by GHSA-9jrq-w75r-8gcw Dependencies (osv-scanner)
low osv/GHSA-662x-8wvj-2276 src-tauri/Cargo.lock [email protected] (crates.io) is affected by GHSA-662x-8wvj-2276 Dependencies (osv-scanner)
low osv/GHSA-9264-jvgf-6w2f src-tauri/Cargo.lock [email protected] (crates.io) is affected by GHSA-9264-jvgf-6w2f Dependencies (osv-scanner)
low osv/GHSA-9wfm-jcj8-jfv9 src-tauri/Cargo.lock [email protected] (crates.io) is affected by GHSA-9wfm-jcj8-jfv9 Dependencies (osv-scanner)
low osv/GHSA-g6xm-f9xp-qq35 src-tauri/Cargo.lock [email protected] (crates.io) is affected by GHSA-g6xm-f9xp-qq35 Dependencies (osv-scanner)
low osv/GHSA-j7h2-66j4-ghjf src-tauri/Cargo.lock [email protected] (crates.io) is affected by GHSA-j7h2-66j4-ghjf Dependencies (osv-scanner)
low osv/GHSA-p8qx-h547-fjw9 src-tauri/Cargo.lock [email protected] (crates.io) is affected by GHSA-p8qx-h547-fjw9 Dependencies (osv-scanner)
low opengrep/rust.lang.security.temp-dir src-tauri/src/download.rs:351 temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary... Static analysis (opengrep)
low opengrep/rust.lang.security.temp-dir src-tauri/src/download.rs:374 temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary... Static analysis (opengrep)
low opengrep/rust.lang.security.temp-dir src-tauri/src/download.rs:391 temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary... Static analysis (opengrep)
low opengrep/rust.lang.security.current-exe src-tauri/src/store.rs:136 current_exe should not be used for security operations. From the docs: "The output of this function should not be trusted for anything that might have security implications. Basically, if users can run the executable, they can change... Static analysis (opengrep)
low opengrep/rust.lang.security.temp-dir src-tauri/src/store.rs:221 temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary... Static analysis (opengrep)
low opengrep/rust.lang.security.unsafe-usage src-tauri/src/watch.rs:392 Detected 'unsafe' usage, please audit for secure usage [confidence high] Static analysis (opengrep)
low opengrep/rust.lang.security.unsafe-usage src-tauri/src/watch.rs:394 Detected 'unsafe' usage, please audit for secure usage [confidence high] Static analysis (opengrep)
low opengrep/rust.lang.security.unsafe-usage src-tauri/src/watch.rs:420 Detected 'unsafe' usage, please audit for secure usage [confidence high] Static analysis (opengrep)
low opengrep/rust.lang.security.unsafe-usage src-tauri/src/watch.rs:422 Detected 'unsafe' usage, please audit for secure usage [confidence high] Static analysis (opengrep)
low gitleaks/private-key src-tauri/tests/remote_session.rs:38 Possible private-key secret in the current tree (test/docs/example file) Secrets (gitleaks)

Tools and coverage

Every analyzer that ran on this commit. A failed or skipped tool is a coverage gap: its share of the score is left out and the coverage figure drops.

AnalyzerPillarStatusVersionFindingsNote
AI tool configurationAI provenanceoksignatures-v10
Explicit AI attributionAI provenanceoksignatures-v10
Release velocityAI provenanceokprov-40
Coding styleAI provenanceok—0
Commit velocityAI provenanceokprov-40
Findings in AI-written linesAI provenanceokgit-blame0
Complexity (lizard)Code qualityoklizard 1.25.10
DocumentationCode qualityok—0
Duplication (jscpd)Code qualityokrepotrust-dup-w60
LintCode qualityokopengrep 1.33.1; rules f1d2b562b41411
Tests and CICode qualityok—0
Type safetyCode qualityok—0
CI workflows (zizmor)Securityokzizmor 1.32.034
Dependencies (osv-scanner)Securityokosv-scanner version: 2.7.135
Release downloadsSecurityok—0
Security postureSecurityok—0
Package registriesSecurityok—0
Static analysis (opengrep)Securityokopengrep 1.33.1; rules f1d2b562b41441
OpenSSF ScorecardSecurityskipped—0no published OpenSSF Scorecard result for this repo
Secrets (gitleaks)Securityokgitleaks 8.30.11

Score history

Scores from different scoring versions aren't directly comparable.

ScoredCommitScoringAI provenanceQualitySecurity
2026-11-14bbb339979aeeprov-5+qual-2+sec-210%7752
2026-11-14bbb339979aeeprov-4+qual-2+sec-210%7752

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/simon141/pabloagent/ai.svg)](https://repotrust.synapticcyber.com/r/github.com/simon141/pabloagent/)
[![RepoTrust quality](https://repotrust.synapticcyber.com/badge/github.com/simon141/pabloagent/quality.svg)](https://repotrust.synapticcyber.com/r/github.com/simon141/pabloagent/)
[![RepoTrust security](https://repotrust.synapticcyber.com/badge/github.com/simon141/pabloagent/security.svg)](https://repotrust.synapticcyber.com/r/github.com/simon141/pabloagent/)
Full text report
  • Repository: https://github.com/simon141/pabloagent
  • Commit: bbb339979aee6d5aca62d9c0139186afd928a206
  • Generated: 2026-11-14T14:52:07+00:00
  • Scorer 0.1.0, scoring prov-5+qual-2+sec-2, report schema v2

Scores

Pillar Score Signal Confidence Coverage
AI provenance (estimated AI-generated share) 10 explicit 95% 100%
Code quality 77 adequate 90% 100%
Security 52 weak 85% 100%

AI provenance

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

  • Explicitly attributed share (lower bound): 9.7%
  • Unattributed share in AI-consistent velocity bursts: 0.0%
  • Estimated AI-generated share: 9.7%
AI tool Attributed commits Lines added
Claude Code 45 2,580
  • AI tooling configured in repo: claude-code, generic-agent

Current source lines last changed by AI-attributed commits: 1,826 of 21,372.

Findings per 1,000 lines AI-attributed Other Ratio
Quality 0.0 0.563 0.0x
Security 0.548 2.046 0.27x
  • Stylometry index: 0.30 per 1,000 lines (narrated steps 0, placeholders 0, assistant phrasing 0, emoji 13). Reported as a signal, not scored.
Month Lines added Attributed to AI
2026-08 22,650 1%
2026-09 3,642 53%
2026-10 412 100%

Evidence

  • Claude Code: trailer 'Co-Authored-By: Claude' (bbb339979aee)
  • Claude Code: trailer 'Co-Authored-By: Claude' (2a3bddab5a9c)
  • Claude Code: trailer 'Co-Authored-By: Claude' (b14fc3ed5931)
  • Claude Code: trailer 'Co-Authored-By: Claude' (009a3c3903e6)
  • Claude Code: trailer 'Co-Authored-By: Claude' (2f39781fefc9)
  • Claude Code: trailer 'Co-Authored-By: Claude' (d30ca6e79cf4)
  • Claude Code: trailer 'Co-Authored-By: Claude' (0e25384e2067)
  • Claude Code: trailer 'Co-Authored-By: Claude' (c215348cbe99)
  • Claude Code: trailer 'Co-Authored-By: Claude' (e9ae4e15e532)
  • Claude Code: trailer 'Co-Authored-By: Claude' (5d406bafdee0)
  • Claude Code: trailer 'Co-Authored-By: Claude' (24085ca38315)
  • Claude Code: trailer 'Co-Authored-By: Claude' (ee6e2bf6b491)
  • Claude Code: trailer 'Co-Authored-By: Claude' (d9bd66113e04)
  • Claude Code: trailer 'Co-Authored-By: Claude' (aff46bf23c41)
  • Claude Code: trailer 'Co-Authored-By: Claude' (a069d93c384a)

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 0.18, CI runs tests; 16% of function code in complex or long functions; 3% duplicated lines. Weakest area: complexity.

Area Score
Complexity (lizard) 62
Duplication 83
Code smells (Opengrep) 89
Tests and CI 79
Documentation 65
Type safety 100
Process (Scorecard review/maintenance) n/a
  • Functions: 1,221; mean complexity 3.2, 90th percentile 7; 31 complex and 7 long functions
  • Duplicated lines: 3.1% of 16,426 compared
  • Tests: 3,759 test lines for 21,372 source lines (ratio 0.18); CI test commands: go test, cargo test; 13% of recent source commits also change tests
  • Docs missing or thin: contributing, changelog

Most complex functions:

Security

Security posture is weak: 35 known vulnerabilities in 18 dependencies; 8 high-severity SAST findings; 33 high-severity workflow issues. Weakest area: posture.

Area Score
Secrets (gitleaks, tree + history) 97
Static analysis (Opengrep) 79
Vulnerable dependencies (OSV) 32
CI workflows (zizmor) 0
Posture (policy, updates, signing, lockfiles) 0
OpenSSF Scorecard n/a
  • Known vulnerabilities: 35 in 18 packages (critical 0, high 4, medium 11, low 7)

  • Posture checks passed: lockfiles; missing: security policy, dependency updates, signed commits

Top findings

Severity Finding Location
high opengrep/javascript.browser.security.insecure-document-method: User controlled data in methods like innerHTML, outerHTML or document.write is an anti-pattern that can lead to XSS vulnerabilities [confidence low] src/main.ts:1538
high opengrep/javascript.browser.security.insecure-innerhtml: User controlled data in a el.innerHTML is an anti-pattern that can lead to XSS vulnerabilities [confidence low] src/main.ts:1538
high opengrep/javascript.browser.security.insecure-document-method: User controlled data in methods like innerHTML, outerHTML or document.write is an anti-pattern that can lead to XSS vulnerabilities [confidence low] src/main.ts:3292
high opengrep/javascript.browser.security.insecure-innerhtml: User controlled data in a model.innerHTML is an anti-pattern that can lead to XSS vulnerabilities [confidence low] src/main.ts:3292
high opengrep/javascript.browser.security.insecure-document-method: User controlled data in methods like innerHTML, outerHTML or document.write is an anti-pattern that can lead to XSS vulnerabilities [confidence low] src/transcript.ts:642
high opengrep/javascript.browser.security.insecure-innerhtml: User controlled data in a el.innerHTML is an anti-pattern that can lead to XSS vulnerabilities [confidence low] src/transcript.ts:642
high opengrep/javascript.browser.security.insecure-document-method: User controlled data in methods like innerHTML, outerHTML or document.write is an anti-pattern that can lead to XSS vulnerabilities [confidence low] src/transcript.ts:1742
high opengrep/javascript.browser.security.insecure-innerhtml: User controlled data in a body.innerHTML is an anti-pattern that can lead to XSS vulnerabilities [confidence low] src/transcript.ts:1742
high osv/GHSA-68fv-2mgg-jv7q: [email protected] (npm) is affected by GHSA-68fv-2mgg-jv7q package-lock.json
high osv/GHSA-587h-7wmj-h5pm: [email protected] (npm) is affected by GHSA-587h-7wmj-h5pm package-lock.json
high osv/GHSA-47hw-gvq5-r2gm: [email protected] (crates.io) is affected by RUSTSEC-2026-0492, GHSA-47hw-gvq5-r2gm src-tauri/Cargo.lock
high osv/GHSA-vp5q-ff62-jwqv: [email protected] (crates.io) is affected by RUSTSEC-2026-0495, GHSA-vp5q-ff62-jwqv src-tauri/Cargo.lock
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/android-release.yml:26
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/android-release.yml:30
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/android-release.yml:35
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/android-release.yml:45
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/android-release.yml:92
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/android-release.yml:119
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/android-release.yml:123
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/android-release.yml:131
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/android-release.yml:181
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/android-release.yml:197
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/android-release.yml:201
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/android-release.yml:211
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/android-release.yml:257

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

  • Source lines: 21,372; test lines: 3,759
Language Lines
TypeScript 11,205
Rust 10,706
JavaScript 1,606
Shell 872
Kotlin 742