No material or immediate-danger item was identified.
Expected scanner matches (14)
Credential access and network transmission in one file
Expected behavior · high confidence
The code uses a standard security token (CSRF token) to ask the local SillyTavern server for a list of image files in a character's gallery folder. This is a normal, expected operation for an extension that manages character media. No passwords, API keys, or other secrets are sent anywhere, and the request stays within the user's own SillyTavern instance.
Technical evidence
Scanner reason: A credential source and an outbound network operation were detected in the same file.
Contextual assessment: The flagged code retrieves a CSRF token via getCsrfToken and includes it in a POST request to the relative endpoint /api/images/list on the local SillyTavern server. The CSRF token is a standard anti-cross-site-request-forgery mechanism for SillyTavern's own internal API, not a user credential or model-provider API key. The fetch destination is same-origin (relative path), not an external server. The request body contains only a gallery folder name and a media type constant, which is consistent with listing character gallery files. This data flow directly supports the extension's stated purpose of character media and gallery management. No credential exfiltration, external transmission, or concealed execution is present.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- tavernkeeper 3
- Rule
- credential-exfiltration
- File role
- production
- Source
- index.js:1266
Gitleaks reported generic-api-key
Expected behavior · high confidence
The scanner flagged this line because a settings label looked like it might be a secret key. It is not a secret; it is just the internal name for a checkbox option that turns a feature on or off. There is no password or token exposed here.
Technical evidence
Scanner reason: Gitleaks matched secret-detection rule generic-api-key in this repository.
Contextual assessment: The gitleaks generic-api-key rule matched the string at line 579, which is a settings definition object whose key property is the identifier for a boolean checkbox setting. This is a configuration key name used to toggle a V4 API feature, not a credential or secret value. No authentication token, password, or sensitive material is present at this location. The scanner pattern produced a false positive on an ordinary settings key string.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- gitleaks 8.30.1
- Rule
- generic-api-key
- File role
- production
- Source
- modules/providers/chub/chub-provider.js:579
Gitleaks reported gcp-api-key
Expected behavior · high confidence
This is a public Firebase API key used to let the extension log into the Wyvern character-sharing service. Firebase keys like this are meant to be visible in client-side code and do not give anyone special access by themselves. This is normal and expected for how the extension works.
Technical evidence
Scanner reason: Gitleaks matched secret-detection rule gcp-api-key in this repository.
Contextual assessment: The matched value is a Firebase Web API key (AIzaSy prefix) embedded in client-side code to authenticate against Firebase Identity Toolkit for the Wyvern chat service. Firebase Web API keys are designed to be public-facing identifiers embedded in front-end applications; they do not grant administrative access and are protected by Firebase security rules and user authentication. The key is used to construct sign-in and token-refresh URLs for the Wyvern provider, which aligns with the extension's stated purpose of browsing and downloading characters from online providers. This is a standard Firebase client authentication pattern, not a leaked server-side secret.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- gitleaks 8.30.1
- Rule
- gcp-api-key
- File role
- production
- Source
- modules/providers/wyvern/wyvern-api.js:15
Credential access and network transmission in one file
Expected behavior · high confidence
This code is part of a feature that restores character avatars by downloading images from an online provider and saving them locally. The flagged token is just used to cancel a batch operation if the user navigates away, not a password or API key. The network calls download avatar images and then update the local character files, which is exactly what this feature is supposed to do.
Technical evidence
Scanner reason: A credential source and an outbound network operation were detected in the same file.
Contextual assessment: The scanner correlated a token variable and a fetch call as potential credential exfiltration. In context, the variable named token at line 302 is an operation-cancellation token compared against opToken to abort long-running batch operations, not a credential. The fetch call at line 330 targets the local SillyTavern endpoint for editing character avatars and includes a CSRF header obtained from the host API as standard for authenticated local requests. The prior fetchWithProxy call retrieves avatar image data from remote provider URLs, which is the stated purpose of this avatar-restore module. No credentials are read from storage, no secret values are transmitted to external destinations, and all network destinations are consistent with the feature's purpose.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- tavernkeeper 3
- Rule
- credential-exfiltration
- File role
- production
- Source
- modules/providers/datacat/datacat-avatar-restore.js:330
Credential access and network transmission in one file
Expected behavior · high confidence
The code grabs a security token that SillyTavern itself provides and uses it to send the edited character picture back to SillyTavern's own server. The token is not sent anywhere outside the user's own SillyTavern instance. This is normal and expected for an extension that edits character avatars.
Technical evidence
Scanner reason: A credential source and an outbound network operation were detected in the same file.
Contextual assessment: The flagged pattern is a CSRF token retrieved via CoreAPI.getCSRFToken() and immediately used in a same-origin fetch to the relative path /api/characters/edit-avatar. The token is placed in the X-CSRF-Token header for its intended purpose: authenticating a POST request to the local SillyTavern server to upload a replacement character avatar. The request body contains only an avatar image buffer and the target avatar filename. No credential is transmitted to any external destination, stored, logged, or passed to a third party. This is a standard SillyTavern extension API call matching the project's stated purpose of managing and editing character cards and their avatars.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- tavernkeeper 3
- Rule
- credential-exfiltration
- File role
- production
- Source
- modules/character-creator.js:3324
Gitleaks reported generic-api-key
Expected behavior · high confidence
This is a public search key for a character-browsing website. The extension normally grabs this key from the website's own public pages and only uses the built-in copy as a backup if that fails. It is not a secret password and does not give access to anything private.
Technical evidence
Scanner reason: Gitleaks matched secret-detection rule generic-api-key in this repository.
Contextual assessment: The matched value is a hardcoded fallback MeiliSearch search token for the public JannyAI character search service. The surrounding code shows the primary mechanism scrapes this same token from the service's public client-side JavaScript bundle, and only falls back to the constant when scraping fails. This is a public read-only search API key already exposed in the site's frontend, not a private user credential or model-provider secret. No exfiltration, concealment, or unauthorized access is involved.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- gitleaks 8.30.1
- Rule
- generic-api-key
- File role
- production
- Source
- modules/providers/janny/janny-api.js:13
Credential access and network transmission in one file
Expected behavior · high confidence
The extension downloads character images and saves them to your local SillyTavern server. It uses a standard security token (CSRF) that SillyTavern itself requires for uploads, and sends it only back to your own SillyTavern instance. No credentials are being stolen or sent anywhere external.
Technical evidence
Scanner reason: A credential source and an outbound network operation were detected in the same file.
Contextual assessment: The code retrieves a CSRF token and includes it in an X-CSRF-Token header on a POST request to the local SillyTavern backend image-upload endpoint. The request body contains base64-encoded media data, a generated filename, format, and folder name. This is the standard same-origin pattern for SillyTavern extensions uploading downloaded character media to the host server. The CSRF token is sent only to the local SillyTavern API base, not to any external or third-party destination. No model-provider API keys, user passwords, or other secrets are accessed or transmitted.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- tavernkeeper 3
- Rule
- credential-exfiltration
- File role
- production
- Source
- app/library.js:21896
Gitleaks reported generic-api-key
Expected behavior · high confidence
The detected 'key' is actually a public search token used to query a character browsing website. It is normal for this kind of token to be included in frontend extensions and does not grant any dangerous or private access.
Technical evidence
Scanner reason: Gitleaks matched secret-detection rule generic-api-key in this repository.
Contextual assessment: The matched string is a fallback MeiliSearch token for the JannyAI service, hardcoded as a constant. The code comments indicate it is fetched dynamically from JannyAI's client config and used as a fallback. MeiliSearch public tokens are designed to be used in frontend applications to restrict search queries. This is not a private credential and its presence in client-side extension code is expected.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- gitleaks 8.30.1
- Rule
- generic-api-key
- File role
- production
- Source
- modules/providers/janny/janny-api.js:13
Gitleaks reported generic-api-key
Expected behavior · high confidence
The scanner saw a string that looks like it could be an API key name, but it is actually just the internal label for a checkbox option in the extension's settings. No real password or secret is exposed.
Technical evidence
Scanner reason: Gitleaks matched secret-detection rule generic-api-key in this repository.
Contextual assessment: The scanner matched a generic-api-key pattern on a settings definition object. The flagged line is a configuration key name string used to identify a boolean checkbox setting. It is not a credential, token, or secret. The actual authentication token setting is declared separately as a password-type field with a null default, meaning the user supplies it at runtime. No hardcoded credential is present.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- gitleaks 8.30.1
- Rule
- generic-api-key
- File role
- production
- Source
- modules/providers/chub/chub-provider.js:579
Credential access and network transmission in one file
Expected behavior · high confidence
Detailed wording was omitted by the public report safety filter.
Technical evidence
Scanner reason: A credential source and an outbound network operation were detected in the same file.
Contextual assessment: Detailed technical wording was omitted by the public report safety filter.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- tavernkeeper 3
- Rule
- credential-exfiltration
- File role
- production
- Source
- modules/batch-transfer.js:778
Credential access and network transmission in one file
Expected behavior · high confidence
The code gets a security token used to protect against fake requests and sends it only to the local SillyTavern server when updating a character's avatar picture. This is exactly how extensions are supposed to talk to SillyTavern's own server. No passwords, API keys, or personal secrets are taken or sent anywhere outside your own SillyTavern instance.
Technical evidence
Scanner reason: A credential source and an outbound network operation were detected in the same file.
Contextual assessment: The flagged code retrieves a CSRF token via the SillyTavern core API and includes it in a POST request to the local SillyTavern server endpoint for editing a character avatar. The CSRF token is a standard anti-cross-site-request-forgery mechanism, not a user-owned secret or model-provider API key. The destination is the same-origin local server API, not an external or third-party endpoint. The token is used for its intended purpose and is not persisted, logged, or transmitted off-host. The preceding fetch of an avatar URL is part of the stated feature of applying a version's avatar image to a character. This is a normal SillyTavern extension pattern for authenticated local API calls.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- tavernkeeper 3
- Rule
- credential-exfiltration
- File role
- production
- Source
- modules/character-versions.js:1453
Gitleaks reported jwt
Expected behavior · high confidence
The flagged value is a public key that JanitorAI intentionally ships in its own website code so browsers can log in. It is not a private password or secret. Using it here matches its designed purpose and does not give anyone special access.
Technical evidence
Scanner reason: Gitleaks matched secret-detection rule jwt in this repository.
Contextual assessment: The matched value is a Supabase anon publishable key for JanitorAI's GoTrue auth endpoints. The surrounding comments and usage show it is sent only as an apikey header to Supabase auth endpoints for client-side login and token refresh. Supabase anon keys are designed to be embedded in frontend bundles and carry the anon role, not a service-role secret. The value was already redacted by the scanner. No exfiltration, concealment, or privileged access is present.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- gitleaks 8.30.1
- Rule
- jwt
- File role
- production
- Source
- modules/providers/datacat/datacat-api.js:249
Gitleaks reported jwt
Expected behavior · high confidence
This is a public key that JanitorAI intentionally publishes in its own website code. It is meant to be visible in client-side applications and does not grant privileged access. It is not a leaked password or secret token.
Technical evidence
Scanner reason: Gitleaks matched secret-detection rule jwt in this repository.
Contextual assessment: The flagged value is a Supabase publishable anon key (role:anon) for JanitorAI's GoTrue auth endpoints. Supabase anon keys are designed to be embedded in client-side bundles and are shipped in JanitorAI's own frontend. The key is used only as an apikey/Authorization header for public auth endpoints, not as a server-side secret. The surrounding comments and code confirm this is a public key used for client-side login/refresh flows.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- gitleaks 8.30.1
- Rule
- jwt
- File role
- production
- Source
- modules/providers/datacat/datacat-api.js:272
Gitleaks reported gcp-api-key
Expected behavior · high confidence
The flagged value is a Firebase API key that browser apps are supposed to include in their code. It identifies the app to Google's login service but is not a password or secret token. It is used here to let the extension log in to the Wyvern character service, which is exactly what the extension is meant to do.
Technical evidence
Scanner reason: Gitleaks matched secret-detection rule gcp-api-key in this repository.
Contextual assessment: The matched value is a Firebase Web API key embedded in client-side code. Firebase web API keys are public identifiers by design and are not treated as secrets; they identify the Firebase project and are required in the URL query string for Google Identity Toolkit endpoints. The same key is necessarily exposed in any browser-based frontend that uses Firebase Authentication. This key is used for its stated purpose: constructing the sign-in and token-refresh URLs for the Wyvern provider. It does not authorize access on its own; access control is enforced by Firebase Security Rules and per-user authentication. Possessing the key confers no privilege beyond what the public Wyvern web application already exposes, and Google applies rate limiting and abuse protections regardless of key possession.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- gitleaks 8.30.1
- Rule
- gcp-api-key
- File role
- production
- Source
- modules/providers/wyvern/wyvern-api.js:17