Peter Steinberger
25db01fe08
refactor(test): use withEnvAsync in pairing store fixture
2026-02-21 13:06:12 +00:00
Peter Steinberger
21bb46d304
fix(ci): include browser network in sandbox test fixture
2026-02-21 13:05:51 +00:00
Peter Steinberger
7a27e2648a
refactor(test): dedupe plugin env overrides via env helpers
2026-02-21 13:03:41 +00:00
Peter Steinberger
f48698a50b
fix(security): harden sandbox browser network defaults
2026-02-21 14:02:53 +01:00
Peter Steinberger
cf82614259
refactor(test): reuse state-dir helper in telegram tests
2026-02-21 13:02:12 +00:00
Peter Steinberger
26eb1f781d
refactor(test): reuse state-dir env helper in auth profile override e2e
2026-02-21 13:00:16 +00:00
Peter Steinberger
c2874aead7
refactor(test): centralize temporary state-dir env setup
2026-02-21 12:59:24 +00:00
Peter Steinberger
50a8942c07
docs(changelog): add WhatsApp reaction allowlist security note
2026-02-21 13:57:54 +01:00
Aether AI Agent
e217f8c3f7
fix(security): OC-91 validate WhatsApp JID against allowlist in all send paths — Aether AI Agent
2026-02-21 13:57:54 +01:00
Peter Steinberger
8c1518f0f3
fix(sandbox): use one-time noVNC observer tokens
2026-02-21 13:56:58 +01:00
Peter Steinberger
b43aadc34c
refactor(test): dedupe temp-home setup in voicewake suite
2026-02-21 12:56:34 +00:00
Peter Steinberger
c529bafdc3
refactor(test): reuse temp-home helper in voicewake e2e
2026-02-21 12:54:54 +00:00
Peter Steinberger
577e5cc74b
refactor(test): dedupe gateway env setup and add env util coverage
2026-02-21 12:52:21 +00:00
Peter Steinberger
621d8e1312
fix(sandbox): require noVNC observer password auth
2026-02-21 13:44:24 +01:00
Peter Steinberger
6cb7e16d40
fix(oauth): harden refresh token refresh-response validation
2026-02-21 13:44:14 +01:00
Peter Steinberger
be7f825006
refactor(gateway): harden proxy client ip resolution
2026-02-21 13:36:23 +01:00
Ayaan Zaidi
8b1fe0d1e2
fix(telegram): split streaming preview per assistant block ( #22613 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 26f35f4411
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com >
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com >
Reviewed-by: @obviyus
2026-02-21 18:05:23 +05:30
Peter Steinberger
36a0df423d
refactor(gateway): make ws and http auth surfaces explicit
2026-02-21 13:33:09 +01:00
Peter Steinberger
1835dec200
fix(security): force sandbox browser hash migration and audit stale labels
2026-02-21 13:25:41 +01:00
Peter Steinberger
b2d84528f8
refactor(test): remove duplicate cron tool harnesses
2026-02-21 12:25:23 +00:00
Peter Steinberger
14b0d2b816
refactor: harden control-ui auth flow and add insecure-flag audit summary
2026-02-21 13:18:23 +01:00
Peter Steinberger
4cd7d95746
style(browser): apply oxfmt cleanup for gate
2026-02-21 13:16:07 +01:00
Peter Steinberger
f265d45840
fix(tts): make model provider overrides opt-in
2026-02-21 13:16:07 +01:00
Peter Steinberger
f202e73077
refactor(security): centralize host env policy and harden env ingestion
2026-02-21 13:04:39 +01:00
Peter Steinberger
08e020881d
refactor(security): unify command gating and blocked-key guards
2026-02-21 13:04:37 +01:00
Peter Steinberger
356d61aacf
fix(gateway): scope tailscale tokenless auth to websocket
2026-02-21 13:03:13 +01:00
Peter Steinberger
6aa11f3092
fix(acp): harden resource link metadata formatting
2026-02-21 13:00:02 +01:00
Peter Steinberger
b577228d6b
test(security): add overflow compaction truncation-budget regression
2026-02-21 12:59:10 +01:00
Aether AI Agent
084f621025
fix(security): OC-65 prevent compaction counter reset to enforce context exhaustion limit — Aether AI Agent
...
Remove the `overflowCompactionAttempts = 0` reset inside the inner loop's
tool-result-truncation branch. The counter was being zeroed on each truncation
cycle, allowing prompt-injection attacks to bypass the MAX_OVERFLOW_COMPACTION_ATTEMPTS
guard and trigger unbounded auto-compaction, exhausting context window resources (DoS).
CWE-400 / GHSA-x2g4-7mj7-2hhj
2026-02-21 12:59:10 +01:00
Peter Steinberger
99048dbec2
fix(gateway): align insecure-auth toggle messaging
2026-02-21 12:57:22 +01:00
Peter Steinberger
fbb79d4013
fix(security): harden runtime command override gating
2026-02-21 12:49:57 +01:00
Peter Steinberger
cb84c537f4
fix: normalize status auth cost handling and models header tests
2026-02-21 12:45:06 +01:00
Peter Steinberger
283029bdea
refactor(security): unify webhook auth matching paths
2026-02-21 11:52:34 +01:00
Peter Steinberger
6007941f04
fix(security): harden and refactor system.run command resolution
2026-02-21 11:49:38 +01:00
Peter Steinberger
5cc631cc9c
fix(agents): harden model-skip and tool-policy imports
2026-02-21 11:48:02 +01:00
Peter Steinberger
55aaeb5085
refactor(browser): centralize navigation guard enforcement
2026-02-21 11:46:11 +01:00
Peter Steinberger
2cdbadee1f
fix(security): block startup-file env injection across host execution paths
2026-02-21 11:44:20 +01:00
Peter Steinberger
220bd95eff
fix(browser): block non-network navigation schemes
2026-02-21 11:31:53 +01:00
Peter Steinberger
c6ee14d60e
fix(security): block grep safe-bin file-read bypass
2026-02-21 11:18:29 +01:00
Ayaan Zaidi
677384c519
refactor: simplify Telegram preview streaming to single boolean ( #22012 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: a4017d3b94
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com >
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com >
Reviewed-by: @obviyus
2026-02-21 15:19:13 +05:30
Ayaan Zaidi
e1cb73cdeb
fix: unblock Docker build by aligning commands schema default ( #22558 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 1ad610176d
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com >
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com >
Reviewed-by: @obviyus
2026-02-21 14:47:28 +05:30
Vincent Koc
c20d519e05
feat(security): migrate sha1 hashes to sha256 for synthetic ids ( #7343 ) ( #22528 )
...
* feat(prompt): add explicit owner hash secret to obfuscation path
* feat(security): migrate synthetic IDs to sha256 for #7343
2026-02-21 03:20:14 -05:00
Vincent Koc
9abab6a2c9
Add explicit ownerDisplaySecret for owner ID hash obfuscation ( #22520 )
...
* feat(config): add owner display secret setting
* feat(prompt): add explicit owner hash secret to obfuscation path
* test(prompt): assert owner hash secret mode behavior
* Update src/agents/system-prompt.ts
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
---------
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2026-02-21 03:13:56 -05:00
SleuthCo.AI
fe609c0c77
security(hooks): block prototype-chain traversal in webhook template getByPath ( #22213 )
...
* security(hooks): block prototype-chain traversal in webhook template getByPath
The getByPath() function in hooks-mapping.ts traverses attacker-controlled
webhook payload data using arbitrary property path expressions, but does not
filter dangerous property names (__proto__, constructor, prototype).
The config-paths module (config-paths.ts) already blocks these exact keys
for config path traversal via a BLOCKED_KEYS set, but the hooks template
system was not protected with the same guard.
Add a BLOCKED_PATH_KEYS set mirroring config-paths.ts and reject traversal
into __proto__, prototype, or constructor in getByPath(). Add three test
cases covering all three blocked keys.
Signed-off-by: Alan Ross <alan@sleuthco.ai >
* test(gateway): narrow hook action type in prototype-pollution tests
* changelog: credit hooks prototype-path guard in PR 22213
* changelog: move hooks prototype-path fix into security section
---------
Signed-off-by: Alan Ross <alan@sleuthco.ai >
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-02-21 03:01:03 -05:00
Takayuki Maeda
40f1a6c0d2
chore: Dedupe sent-message cache storage ( #22127 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 8401257b27
Co-authored-by: TaKO8Ki <41065217+TaKO8Ki@users.noreply.github.com >
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com >
Reviewed-by: @obviyus
2026-02-21 12:34:59 +05:30
Vincent Koc
c2f5628915
Fix formatting ( #22474 )
2026-02-21 01:37:02 -05:00
Vincent Koc
d3bb924709
chore(deadcode): add deadcode scanning and remove unused lockfile deps ( #22468 )
...
* chore(deadcode): add deadcode scanning and remove unused lockfile deps
* chore(changelog): mention deadcode CI scan pass
* ci: disable deadcode job temporarily
* docs(changelog): add PR ref and thanks for deadcode scan entry
* ci: comment out deadcode job condition while keeping it disabled
2026-02-21 01:29:20 -05:00
Vincent Koc
8877bfd11e
gateway: trust-proxy-aware X-Forwarded-For resolution ( #22466 )
2026-02-21 01:23:21 -05:00
C.J. Winslow
58f7b7638a
Security: add per-wrapper IDs to untrusted-content markers ( #19009 )
...
Fixes #10927
Adds unique per-wrapper IDs to external-content boundary markers to
prevent spoofing attacks where malicious content could inject fake
marker boundaries.
- Generate random 16-char hex ID per wrap operation
- Start/end markers share the same ID for pairing
- Sanitizer strips markers with or without IDs (handles legacy + spoofed)
- Added test for attacker-injected markers with fake IDs
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-02-21 01:16:02 -05:00
Vincent Koc
45fff13b1d
TUI: strip only leading inbound metadata ( #22461 )
2026-02-21 01:13:02 -05:00