RepoTrust

HubSpot/messenger

Growl-style alerts and messages for your app. #hubspot-open-source

https://github.com/HubSpot/messenger · commit b1b176185276 · scored 2026-11-13 · 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) 0 none-detected 65% 100%
Code quality 50 weak 90% 100%
Security 68 weak 85% 100%

AI provenance

No AI attribution or AI-consistent velocity signals detected.

Month Lines added Attributed to AI
2013-01 12 0%
2013-02 158 0%
2013-03 1,574 0%
2013-05 83 0%
2013-09 1 0%
2013-11 1,435 0%
2014-02 56 0%

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 weak: test-to-source ratio 0.41, no CI test run detected; 14% of function code in complex or long functions; 31% duplicated lines. Weakest area: process.

Area Score
Complexity (lizard) 65
Duplication 15
Code smells (Opengrep) 100
Tests and CI 41
Documentation 65
Type safety n/a
Process (Scorecard review/maintenance) 10

Most complex functions:

Security

Security posture is weak: no high-impact findings. Weakest area: scorecard.

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

Top findings

Severity Finding Location
medium opengrep/javascript.jquery.security.audit.jquery-insecure-selector: User controlled data in a $(...) is an anti-pattern that can lead to XSS vulnerabilities [confidence low] docs/welcome/javascripts/location-sel.js:45
medium opengrep/javascript.jquery.security.audit.jquery-insecure-selector: User controlled data in a $(...) is an anti-pattern that can lead to XSS vulnerabilities [confidence low] docs/welcome/javascripts/theme-sel.js:39
medium opengrep/javascript.lang.security.audit.detect-non-literal-regexp: RegExp() called with a words function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-controlle [confidence low] docs/welcome/lib/executr/lib/CodeMirror/mode/coffeescript/coffeescript.js:9
medium opengrep/javascript.lang.security.audit.detect-non-literal-regexp: RegExp() called with a a function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-controlled in [confidence low] docs/welcome/lib/executr/lib/coffee-script.js:8
medium opengrep/javascript.lang.security.audit.detect-non-literal-regexp: RegExp() called with a b function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-controlled in [confidence low] docs/welcome/lib/executr/lib/coffee-script.js:8
medium opengrep/javascript.lang.security.audit.detect-non-literal-regexp: RegExp() called with a b function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-controlled in [confidence low] docs/welcome/lib/executr/lib/coffee-script.js:8
medium opengrep/javascript.lang.security.audit.unsafe-dynamic-method: Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low] docs/welcome/lib/executr/lib/coffee-script.js:8
medium opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename: Detected that function argument b has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low] docs/welcome/lib/executr/lib/coffee-script.js:8
medium opengrep/javascript.browser.security.eval-detected: Detected the use of eval(). eval() can be dangerous if used to evaluate dynamic content. If this content can be input from outside the program, this may be a code injection vulnerability. Ensure evaluated content is not definable by external sources. [confidence low] docs/welcome/lib/executr/lib/coffee-script.js:8

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.

Repository profile

Language Lines
JavaScript 2,445
Shell 4

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