Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
da3574c
fix(guardrails): skip credential redaction for base64 image data URLs…
Sep 13, 2026
f7dbfc8
chore(tests): revive 51 vitest files parked behind a closed tracker (…
diegosouzapw Sep 14, 2026
30bf6af
fix(nvidia): fail open when a synced model catalog goes stale (#12849…
diegosouzapw Sep 14, 2026
963d3c4
fix(ci): clear three base-reds on release/v3.8.51 — open-sse typechec…
diegosouzapw Sep 14, 2026
0d13ef4
feat(i18n): 8 new locales — Kannada, Malayalam, Odia, Punjabi, Nepali…
diegosouzapw Sep 14, 2026
8f36211
docs(i18n): sync provider and migration counts in the eight new llm.t…
diegosouzapw Sep 14, 2026
8786c17
fix(ci): clear the orphan base-reds on release/v3.8.51 — the #12867 p…
diegosouzapw Sep 14, 2026
895dda3
fix(ci): clear the base-reds on release/v3.8.51 — doc counts, catalog…
diegosouzapw Sep 14, 2026
5ca724d
fix(api): scope batch bulk-delete to the calling API key (#12969)
diegosouzapw Sep 14, 2026
67cb0ac
fix: chain serial quarantine step in npm test script (fixes #13286) (…
KooshaPari Sep 15, 2026
8bad85f
fix(logging): mask *-api-key headers in request-log pipeline (#13273)…
KooshaPari Sep 15, 2026
65f5131
fix(tests): correct stale Jina catalog prefix in custom-models test (…
KooshaPari Sep 15, 2026
04bea60
fix(backend): prune old backups after health-check-repair snapshots (…
KooshaPari Sep 15, 2026
43b2661
feat(mcp): carry context_length through MCP list_models_catalog proje…
KooshaPari Sep 15, 2026
2a6d058
fix: skip non-chat generation models in Test all models (#13409)
KooshaPari Sep 15, 2026
f938a08
fix(resilience): add CJK quota-exhaustion patterns to 429 classifier …
KooshaPari Sep 15, 2026
fdfa921
fix(backend): eval runner: failed calls no longer score as passed + d…
KooshaPari Sep 15, 2026
76c928d
fix(backend): eval runner opts out of output-style and memory injecti…
KooshaPari Sep 15, 2026
3a186c1
fix(dashboard): send provider in body for mini-playground web search …
KooshaPari Sep 15, 2026
38ce449
fix(providers): de-duplicate agy and antigravity model catalogs (#13410)
KooshaPari Sep 15, 2026
1738beb
fix(memory): merge memory into top-level system field instead of unsh…
KooshaPari Sep 15, 2026
fc111dc
feat(cli): make startup readiness budget configurable (#13369) (#13433)
KooshaPari Sep 15, 2026
222fe43
docs(providers): add Microsoft 365 Copilot (BizChat) provider guide (…
KooshaPari Sep 15, 2026
cce3a95
fix(tests): add DISABLE_IOREG_STRATEGY env var for macOS test compati…
KooshaPari Sep 15, 2026
97ae101
fix(combo): use traceId for call log id to prevent UNIQUE constraint …
KooshaPari Sep 15, 2026
bf66589
fix(auth): check model lockout before returning synthetic noauth conn…
KooshaPari Sep 15, 2026
c46ca1d
fix(compression): preserve instruction blocks from lossy engines (#13…
KooshaPari Sep 15, 2026
56fedf9
fix(compression): preserve polarity words and newlines in ultra heuri…
KooshaPari Sep 15, 2026
d4a1470
fix(compression): run user preservePatterns before built-in patterns …
KooshaPari Sep 15, 2026
918546a
fix(resilience): increase requestQueue.maxWaitMs default from 15s to …
KooshaPari Sep 15, 2026
fb3f298
fix(security): empty whitelist allows through to prevent admin lockou…
KooshaPari Sep 15, 2026
a0d8ad7
fix(antigravity): derive stable session ID from credentials for promp…
KooshaPari Sep 15, 2026
0b358db
fix(backend): guard memory_fts_au trigger with WHEN clause to stop FT…
KooshaPari Sep 15, 2026
d6e62ae
fix(free-tiers): remove obsolete Together $25 signup credit (#12526) …
KooshaPari Sep 15, 2026
cd112e3
chore(deps): pin csv-parse to ^7.0.2 via overrides (#13117) (#13300)
KooshaPari Sep 15, 2026
6a55d0a
chore(deps): bump hono from ^4.12.34 to ^4.13.7 (#13148) (#13301)
KooshaPari Sep 15, 2026
93a398f
chore(deps): pin joi to ^18.2.8 via overrides (#13085) (#13302)
KooshaPari Sep 15, 2026
5a405e5
Merge release/v3.8.51 into #13550
diegosouzapw Sep 15, 2026
f8451c7
test(guardrails): base64 image data URLs survive credential redaction…
diegosouzapw Sep 15, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions src/lib/guardrails/credentialMasker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,9 @@ function walkValue(
seen = new WeakSet<object>()
): { modified: boolean; value: unknown } {
if (typeof value === "string") {
// #13462: Skip redaction for base64-encoded image data URLs — applying
// credential regexes to binary transport data corrupts valid base64.
if (isImageDataUrl(value)) return { modified: false, value };
const r = redactCredentials(value);
if (r.detections.length) detections.push(...r.detections);
return { modified: r.modified, value: r.text };
Expand Down Expand Up @@ -100,6 +103,16 @@ function walkValue(
return { modified: false, value };
}

/**
* Check if a string is a base64-encoded image data URL that should not be
* subject to text-pattern redaction. Applying credential regexes to binary
* transport data causes false-positive corruption of valid base64 content.
*/
function isImageDataUrl(value: string): boolean {
// Match data URLs with image MIME types (data:image/png;base64,... etc.)
return /^data:image\/[a-zA-Z0-9.+-]+;base64,/.test(value);
}

/** Walk request payloads without changing safe values. */
function redactPayload(
payload: unknown,
Expand Down
Loading