Commit Graph

8383 Commits

Author SHA1 Message Date
Ulrich Diedrichsen
38943f009b
Merge c55d9cf598 into 09be5d45d5 2026-01-30 17:12:31 +01:00
Shakker
09be5d45d5
Merge pull request #4651 from yuting0624/fix/status-command-line-crash
fix(line): resolve TypeError in status command when LINE is enabled
2026-01-30 15:41:40 +00:00
Yuting Lin
3fbf99d725 fix(line): resolve TypeError in status command 2026-01-30 15:41:22 +00:00
Ayush Ojha
37e295fc02
fix: don't warn about expired OAuth tokens with valid refresh tokens (#4593)
OAuth credentials with a refresh token auto-renew on first API call,
so the doctor should not warn about access token expiration when a
refresh token is present. This avoids unnecessary "expired" warnings
that prompt users to re-auth when no action is needed.

Fixes #3032

Co-authored-by: Ayush Ojha <ayushozha@outlook.com>
2026-01-30 15:39:17 +00:00
Ulrich Diedrichsen
c55d9cf598
Merge branch 'main' into feature/security-shield 2026-01-30 13:35:28 +01:00
Ayaan Zaidi
da71eaebd2 fix: correct telegram html nesting (#4578) (thanks @ThanhNguyxn) 2026-01-30 16:53:39 +05:30
ThanhNguyxn
8e5a684445 style: format test file 2026-01-30 16:53:39 +05:30
ThanhNguyxn
b05d57964b fix(telegram): properly nest overlapping HTML tags (#4071)
Unify style and link closing in render.ts to use LIFO order across
both element types, fixing cases where bold/italic spans containing
autolinks produced invalid HTML like <b><a></b></a>.
2026-01-30 16:53:39 +05:30
Ulrich Diedrichsen
b10174ace0 test(security): fix failing tests
- Add CIDR matching to isBlocked() and getBlocklistEntry() methods
- Fix event aggregator threshold logic to only trigger once on first crossing
- Add securityEventAggregator.clearAll() in intrusion-detector tests
- Fix RateLimiter constructor to accept custom maxSize parameter
- Fix token bucket getRetryAfterMs() to return Infinity for impossible requests
- Fix rate limiter peek() to return full capacity for non-existent keys
- Fix shield extractIp() to handle array X-Forwarded-For headers
- Fix ip-manager test mocks to include sync fs methods
- All security tests now passing (173 tests across 8 files)
2026-01-30 12:09:26 +01:00
Ayaan Zaidi
fa9ec6e854 fix: add docker ui install changelog entry (#4584) (thanks @obviyus) 2026-01-30 16:25:24 +05:30
Ayaan Zaidi
1168f59890 perf: skip redundant ui install in Dockerfile 2026-01-30 16:25:24 +05:30
Ulrich Diedrichsen
8f42141f75 fix: resolve lint, format, and TypeScript compilation errors 2026-01-30 11:44:33 +01:00
Ulrich Diedrichsen
e69eccb4b1 docs: enhance PR description with motivation and problem statement 2026-01-30 11:23:04 +01:00
Ulrich Diedrichsen
9692b8ef13 docs: add security shield changelog entry 2026-01-30 11:14:26 +01:00
Ulrich Diedrichsen
9125b3e09f docs(security): add comprehensive security documentation 2026-01-30 11:11:48 +01:00
Ulrich Diedrichsen
a7c5fd342d feat(security): add CLI commands for security management 2026-01-30 11:11:48 +01:00
Ulrich Diedrichsen
c2bd42b89f feat(security): implement Telegram alerting system 2026-01-30 11:11:48 +01:00
Ulrich Diedrichsen
88bcb61c7b feat(security): implement firewall integration (iptables/ufw) 2026-01-30 11:11:48 +01:00
Ulrich Diedrichsen
5c74668413 test(security): fix token bucket tests to match implementation 2026-01-30 11:11:48 +01:00
Ulrich Diedrichsen
2e04a17b5b test(security): add comprehensive unit tests for Phase 1 2026-01-30 11:11:48 +01:00
Ulrich Diedrichsen
18a01881c5 feat(security): integrate security shield with gateway 2026-01-30 11:11:48 +01:00
Ulrich Diedrichsen
79597b7a98 feat(security): add security shield coordinator and middleware
Add main security shield that coordinates all security checks:
- IP blocklist checking
- Rate limiting (auth, connections, requests, webhooks, pairing)
- Intrusion detection integration
- Security event logging

Add HTTP middleware for Express/HTTP integration:
- Request rate limiting middleware
- Connection rate limit checks
- Auth rate limit checks
- Webhook rate limit checks
- Pairing rate limit checks

Features:
- Extract IP from X-Forwarded-For/X-Real-IP headers
- Security context creation from requests
- Unified API for all security checks

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-30 11:11:48 +01:00
Ulrich Diedrichsen
6c6d11c354 feat(security): add intrusion detection system
Add pattern-based intrusion detector with attack recognition for:
- Brute force attacks (10 failures in 10min)
- SSRF bypass attempts (3 attempts in 5min)
- Path traversal attempts (5 attempts in 5min)
- Port scanning (20 connections in 10sec)

Features:
- Event aggregation with sliding windows
- Auto-blocking on detection
- Configurable thresholds per pattern
- Security event logging for all detections

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-30 11:11:48 +01:00
Ulrich Diedrichsen
73ce95d9cc feat(security): implement core security shield infrastructure (Phase 1)
Add foundational security components for rate limiting, intrusion detection,
and activity logging:

Core Components:
- Security event logging system (schema, logger, aggregator)
- Rate limiting with token bucket + sliding window algorithm
- IP blocklist/allowlist management with auto-expiration
- Security configuration schema with opt-out mode defaults

Features:
- JSONL security log files (/tmp/openclaw/security-*.jsonl)
- LRU cache-based rate limiter (10k entry limit, auto-cleanup)
- File-based IP blocklist storage (~/.openclaw/security/blocklist.json)
- Tailscale CGNAT range auto-allowlisted (100.64.0.0/10)
- Configurable rate limits per-IP, per-device, per-sender
- Auto-blocking rules with configurable duration

Configuration:
- New security config section in OpenClawConfig
- Enabled by default for new deployments (opt-out mode)
- Comprehensive defaults for VPS security

Related to: Security shield implementation plan
Part of: Phase 1 - Core Features

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-30 11:11:48 +01:00
Ayaan Zaidi
bc432d8435 fix: accept numeric Telegram react ids (#4533) (thanks @Ayush10) 2026-01-30 15:01:18 +05:30
Ayush Ojha
f760aa302c fix(telegram): react action accepts numeric messageId and chatId
The react action used readStringParam for messageId and chatId, which
rejected numeric values with a misleading "messageId required" error.
Switched to readStringOrNumberParam to match the delete/edit actions.

Closes #1459

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 14:56:53 +05:30
Ayaan Zaidi
3a85cb1833 fix: honor Telegram proxy dispatcher (#4456) (thanks @spiceoogway) 2026-01-30 14:38:39 +05:30
spiceoogway
7150268f84 fix(telegram): use undici fetch for proxy to fix dispatcher option
Fixes #4038

The global fetch in Node.js doesn't support undici's dispatcher option,
which is required for ProxyAgent to work. This fix imports fetch from
undici directly to enable proper proxy support for Telegram API calls.

Root cause: makeProxyFetch() was using global fetch with { dispatcher: agent },
but Node.js's global fetch ignores the dispatcher option. Using undici.fetch
ensures the ProxyAgent dispatcher is properly respected.

Tested: Build passes, TypeScript compilation successful.
2026-01-30 14:37:47 +05:30
Peter Steinberger
6af205a13a docs: update lore with final form 2026-01-30 07:26:07 +00:00
Ayaan Zaidi
9025da2296 fix: scope telegram skill commands per bot (#4360) (thanks @robhparker) 2026-01-30 12:00:29 +05:30
robhparker
c6ddc95fc0 fix(telegram): scope skill commands to bound agent per bot
registerTelegramNativeCommands() calls listSkillCommandsForAgents()
without passing agentIds, causing ALL agents' skill commands to be
registered on EVERY Telegram bot. When multiple agents share skill
names (e.g. two agents both have a "butler" skill), the shared `used`
Set in listSkillCommandsForAgents causes de-duplication suffixes
(_2, _3) and all commands appear on every bot regardless of agent
binding.

This fix uses the existing resolveAgentRoute() (already imported) to
find the bound agent for the current Telegram accountId, then passes
that agentId to listSkillCommandsForAgents(). The function already
accepts an optional agentIds parameter — it just wasn't wired from
the Telegram registration path.

Before: All agents' skill commands registered on every Telegram bot,
causing /butler_2, /housekeeper_2 dedup suffixes and potential
BOT_COMMANDS_TOO_MUCH errors when total exceeds 100.

After: Each Telegram bot only registers skill commands for its own
bound agent. No cross-agent dedup, no command limit overflow.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 11:58:23 +05:30
Nate
28f8d00e9f fix: update install URLs from clawd.bot to openclaw.ai 2026-01-30 00:19:20 -06:00
Manik Vahsith
5e635c9656
feat: add Kimi K2.5 model to synthetic catalog (#4407)
* feat: add Kimi K2.5 model to synthetic catalog

Add hf:moonshotai/Kimi-K2.5 to the synthetic model catalog.
This model is available via dev.synthetic.new API.

- 256k context window
- 8192 max tokens
- Supports reasoning

* chore: fix formatting in onboard-helpers.ts

* fix: update config candidate ordering test (#4407) (thanks @manikv12)

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-30 07:17:42 +01:00
Peter Steinberger
87267fad4f docs: move WhatsApp image below dashboard 2026-01-30 06:55:15 +01:00
Gustavo Madeira Santana
613724c26e Update index.md 2026-01-30 00:33:06 -05:00
Peter Steinberger
77e703c69b chore: update appcast for 2026.1.29 2026-01-30 06:25:45 +01:00
Peter Steinberger
62e4ad23d3 chore: release 2026.1.29 2026-01-30 06:25:45 +01:00
Peter Steinberger
23c424899c docs: reorder 2026.1.29 changelog 2026-01-30 06:25:21 +01:00
Peter Steinberger
c5d7d1110b chore: update pnpm lockfile 2026-01-30 05:15:50 +00:00
Gustavo Madeira Santana
12e8a8410f Update logo and contributor name in docs
Replaced the static image with a responsive logo using the <picture> element for light/dark mode support. Updated contributor name from 'Clawd' to 'Molty'.
2026-01-30 00:13:44 -05:00
Gustavo Madeira Santana
4de0bae45a
Update README with responsive logo for dark mode 2026-01-29 23:38:32 -05:00
Gustavo Madeira Santana
ddad65588f
Add files via upload 2026-01-29 23:37:32 -05:00
Peter Steinberger
bf6ec64fd9 docs: move deepwiki link 2026-01-30 05:33:05 +01:00
Gustavo Madeira Santana
4ec9d98821 Update ASCII art banners for CLI and wizard header
Replaces the previous ASCII art in both the CLI banner and the wizard header with a new, wider design and updates the label to 'OPENCLAW' for consistency.
2026-01-29 23:29:47 -05:00
Peter Steinberger
151ddd624b fix: detect legacy gateway launchd labels 2026-01-30 05:01:46 +01:00
Peter Steinberger
b9afa3d33f fix: migrate symlinked legacy state dirs 2026-01-30 04:48:04 +01:00
Peter Steinberger
d9c81991b1 chore: bump beta 2026-01-30 04:37:46 +01:00
Peter Steinberger
9886fd1a5a fix: migrate legacy state dirs 2026-01-30 04:26:00 +01:00
Peter Steinberger
67918dc41b chore: bump beta 2026-01-30 04:10:47 +01:00
Peter Steinberger
a155e2f8ae fix: migrate legacy config 2026-01-30 04:09:49 +01:00