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: a4017d3b9469d0c25c6ab3f4d9be06b98445474e
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: 1ad610176d0d08eb5ba055429a10d7e8f9ec07a4
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: 8401257b271b85cb5ec03574ef861703ba71ea08
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
Vincent Koc
59167f86ca
test: correct trusted proxy X-Forwarded-For expectation
2026-02-21 00:48:22 -05:00
Vincent Koc
07039dc089
Gateway: harden trusted proxy X-Forwarded-For parsing ( #22429 )
2026-02-20 23:59:20 -05:00
Vincent Koc
35be87b09b
fix(tui): strip inbound metadata blocks from user messages (clean rewrite) ( #22345 )
...
* fix(tui): strip inbound metadata blocks from user text
* chore: clean up metadata-strip format and changelog credit
* chore: format tui metadata-strip tests
* test: align metadata-strip regression expectations
* refactor: reuse canonical inbound metadata stripper
* test: allow tmp media fixture paths in media-understanding tests
* refactor: reuse canonical inbound metadata stripper
* format: fix changelog blank line after headings
* test: fix unrelated check typing regressions
* test: align memory async mock embedding signatures
* test: avoid tsgo mock typing pitfall
* test: restore async search mock typings in merge tree
* test: trigger ci rerun without behavior change
* chore: dedupe todays changelog entries
* fix: dedupe sqlite mock keys in qmd manager test
* Update qmd-manager.test.ts
* test: align chat metadata sanitization expectation
2026-02-20 23:52:43 -05:00
vignesh07
338ae269d6
test(memory): avoid stmt mock shape flake by reusing typed busy stmt
2026-02-20 20:43:15 -08:00
vignesh07
665221a1f0
test(memory): mock sqlite stmt with all+get for busy case
2026-02-20 20:43:15 -08:00
vignesh07
e90eedb0ae
test(memory): fix sqlite busy mock to match implementation
2026-02-20 20:43:15 -08:00
Vignesh Natarajan
cd6bbe8cea
Session: enforce startup sequence on bare reset greeting
2026-02-20 20:38:56 -08:00
Tak Hoffman
7417c36268
fix(cron): honor maxConcurrentRuns in timer loop (openclaw#22413) thanks @Takhoffman
...
Verified:
- pnpm install --frozen-lockfile
- pnpm build
- pnpm check
- pnpm test:macmini (failed on unrelated baseline test: src/memory/qmd-manager.test.ts > throws when sqlite index is busy)
Co-authored-by: Takhoffman <781889+Takhoffman@users.noreply.github.com >
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com >
2026-02-20 22:31:58 -06:00
Vignesh Natarajan
93c2f20a23
Memory: surface explicit memory_search unavailable status
2026-02-20 20:30:52 -08:00
Vignesh Natarajan
1cc2263578
TUI: bound chat-log growth to prevent render overflows
2026-02-20 20:27:58 -08:00
Vignesh Natarajan
2227840989
Gateway/TUI: filter heartbeat ACK noise in chat events
2026-02-20 20:23:28 -08:00
vignesh07
1ded4c672a
test(memory): fix TS types after vitest/ts updates
2026-02-20 20:21:42 -08:00
Vignesh Natarajan
d583399c92
Hooks: persist session memory on /reset
2026-02-20 20:19:29 -08:00
Vignesh Natarajan
544c213d42
Memory/QMD: diversify mixed-source search results
2026-02-20 20:13:24 -08:00
Vignesh Natarajan
d7a7ebb75a
TUI: dedupe duplicate backspace events in input
2026-02-20 20:10:22 -08:00
Vignesh Natarajan
18b4b47708
TUI: guide pairing-required recovery in disconnect state
2026-02-20 20:04:19 -08:00
Vignesh Natarajan
c0d5fc8d1e
CLI: default pairing channel for pairing commands
2026-02-20 19:59:54 -08:00
Vignesh Natarajan
be756b9a89
Memory: fix async sync close race
2026-02-20 19:55:11 -08:00
Ayaan Zaidi
2649e9e044
fix: preselect Telegram-supported status reaction variants ( #22380 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 018fcd6e2e141604c7e18a249d15b994367ccda3
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 09:20:20 +05:30