Vincent Koc
42e3d8d693
Secrets: add inline allowlist review set ( #38314 )
...
* Secrets: add inline allowlist review set
* Secrets: narrow detect-secrets file exclusions
* Secrets: exclude Docker fingerprint false positive
* Secrets: allowlist test and docs false positives
* Secrets: refresh baseline after allowlist updates
* Secrets: fix gateway chat fixture pragma
* Secrets: format pre-commit config
* Android: keep talk mode fixture JSON valid
* Feishu: rely on client timeout injection
* Secrets: allowlist provider auth test fixtures
* Secrets: allowlist onboard search fixtures
* Secrets: allowlist onboard mode fixture
* Secrets: allowlist gateway auth mode fixture
* Secrets: allowlist APNS wake test key
* Secrets: allowlist gateway reload fixtures
* Secrets: allowlist moonshot video fixture
* Secrets: allowlist auto audio fixture
* Secrets: allowlist tiny audio fixture
* Secrets: allowlist embeddings fixtures
* Secrets: allowlist resolve fixtures
* Secrets: allowlist target registry pattern fixtures
* Secrets: allowlist gateway chat env fixture
* Secrets: refresh baseline after fixture allowlists
* Secrets: reapply gateway chat env allowlist
* Secrets: reapply gateway chat env allowlist
* Secrets: stabilize gateway chat env allowlist
* Secrets: allowlist runtime snapshot save fixture
* Secrets: allowlist oauth profile fixtures
* Secrets: allowlist compaction identifier fixture
* Secrets: allowlist model auth fixture
* Secrets: allowlist model status fixtures
* Secrets: allowlist custom onboarding fixture
* Secrets: allowlist mattermost token summary fixtures
* Secrets: allowlist gateway auth suite fixtures
* Secrets: allowlist channel summary fixture
* Secrets: allowlist provider usage auth fixtures
* Secrets: allowlist media proxy fixture
* Secrets: allowlist secrets audit fixtures
* Secrets: refresh baseline after final fixture allowlists
* Feishu: prefer explicit client timeout
* Feishu: test direct timeout precedence
2026-03-06 19:35:26 -05:00
Kesku
3d7bc5958d
feat(onboarding): add web search to onboarding flow ( #34009 )
...
* add web search to onboarding flow
* remove post onboarding step (now redundant)
* post-onboarding nudge if no web search set up
* address comments
* fix test mocking
* add enabled: false assertion to the no-key test
* --skip-search cli flag
* use provider that a user has a key for
* add assertions, replace the duplicated switch blocks
* test for quickstart fast-path with existing config key
* address comments
* cover quickstart falls through to key test
* bring back key source
* normalize secret inputs instead of direct string trimming
* preserve enabled: false if it's already set
* handle missing API keys in flow
* doc updates
* hasExistingKey to detect both plaintext strings and SecretRef objects
* preserve enabled state only on the "keep current" paths
* add test for preserving
* better gate flows
* guard against invalid provider values in config
* Update src/commands/configure.wizard.ts
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
* format fix
* only mentions env var when it's actually available
* search apiKey fields now typed as SecretInput
* if no provider check if any search provider key is detectable
* handle both kimi keys
* remove .filter(Boolean)
* do not disable web_search after user enables it
* update resolveSearchProvider
* fix(onboarding): skip search key prompt in ref mode
* fix: add onboarding web search step (#34009 ) (thanks @kesku)
---------
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: Shadow <hi@shadowing.dev >
2026-03-06 13:09:00 -06:00
Josh Avant
72cf9253fc
Gateway: add SecretRef support for gateway.auth.token with auth-mode guardrails ( #35094 )
2026-03-05 12:53:56 -06:00
Kesku
230fea1ca6
feat(web-search): switch Perplexity to native Search API ( #33822 )
...
* feat: Add Perplexity Search API as web_search provider
* docs fixes
* domain_filter validation
* address comments
* provider-specific options in cache key
* add validation for unsupported date filters
* legacy fields
* unsupported_language guard
* cache key matches the request's precedence order
* conflicting_time_filters guard
* unsupported_country guard
* invalid_date_range guard
* pplx validate for ISO 639-1 format
* docs: add Perplexity Search API changelog entry
* unsupported_domain_filter guard
---------
Co-authored-by: Shadow <hi@shadowing.dev >
2026-03-03 22:57:19 -06:00
Josh Avant
806803b7ef
feat(secrets): expand SecretRef coverage across user-supplied credentials ( #29580 )
...
* feat(secrets): expand secret target coverage and gateway tooling
* docs(secrets): align gateway and CLI secret docs
* chore(protocol): regenerate swift gateway models for secrets methods
* fix(config): restore talk apiKey fallback and stabilize runner test
* ci(windows): reduce test worker count for shard stability
* ci(windows): raise node heap for test shard stability
* test(feishu): make proxy env precedence assertion windows-safe
* fix(gateway): resolve auth password SecretInput refs for clients
* fix(gateway): resolve remote SecretInput credentials for clients
* fix(secrets): skip inactive refs in command snapshot assignments
* fix(secrets): scope gateway.remote refs to effective auth surfaces
* fix(secrets): ignore memory defaults when enabled agents disable search
* fix(secrets): honor Google Chat serviceAccountRef inheritance
* fix(secrets): address tsgo errors in command and gateway collectors
* fix(secrets): avoid auth-store load in providers-only configure
* fix(gateway): defer local password ref resolution by precedence
* fix(secrets): gate telegram webhook secret refs by webhook mode
* fix(secrets): gate slack signing secret refs to http mode
* fix(secrets): skip telegram botToken refs when tokenFile is set
* fix(secrets): gate discord pluralkit refs by enabled flag
* fix(secrets): gate discord voice tts refs by voice enabled
* test(secrets): make runtime fixture modes explicit
* fix(cli): resolve local qr password secret refs
* fix(cli): fail when gateway leaves command refs unresolved
* fix(gateway): fail when local password SecretRef is unresolved
* fix(gateway): fail when required remote SecretRefs are unresolved
* fix(gateway): resolve local password refs only when password can win
* fix(cli): skip local password SecretRef resolution on qr token override
* test(gateway): cast SecretRef fixtures to OpenClawConfig
* test(secrets): activate mode-gated targets in runtime coverage fixture
* fix(cron): support SecretInput webhook tokens safely
* fix(bluebubbles): support SecretInput passwords across config paths
* fix(msteams): make appPassword SecretInput-safe in onboarding/token paths
* fix(bluebubbles): align SecretInput schema helper typing
* fix(cli): clarify secrets.resolve version-skew errors
* refactor(secrets): return structured inactive paths from secrets.resolve
* refactor(gateway): type onboarding secret writes as SecretInput
* chore(protocol): regenerate swift models for secrets.resolve
* feat(secrets): expand extension credential secretref support
* fix(secrets): gate web-search refs by active provider
* fix(onboarding): detect SecretRef credentials in extension status
* fix(onboarding): allow keeping existing ref in secret prompt
* fix(onboarding): resolve gateway password SecretRefs for probe and tui
* fix(onboarding): honor secret-input-mode for local gateway auth
* fix(acp): resolve gateway SecretInput credentials
* fix(secrets): gate gateway.remote refs to remote surfaces
* test(secrets): cover pattern matching and inactive array refs
* docs(secrets): clarify secrets.resolve and remote active surfaces
* fix(bluebubbles): keep existing SecretRef during onboarding
* fix(tests): resolve CI type errors in new SecretRef coverage
* fix(extensions): replace raw fetch with SSRF-guarded fetch
* test(secrets): mark gateway remote targets active in runtime coverage
* test(infra): normalize home-prefix expectation across platforms
* fix(cli): only resolve local qr password refs in password mode
* test(cli): cover local qr token mode with unresolved password ref
* docs(cli): clarify local qr password ref resolution behavior
* refactor(extensions): reuse sdk SecretInput helpers
* fix(wizard): resolve onboarding env-template secrets before plaintext
* fix(cli): surface secrets.resolve diagnostics in memory and qr
* test(secrets): repair post-rebase runtime and fixtures
* fix(gateway): skip remote password ref resolution when token wins
* fix(secrets): treat tailscale remote gateway refs as active
* fix(gateway): allow remote password fallback when token ref is unresolved
* fix(gateway): ignore stale local password refs for none and trusted-proxy
* fix(gateway): skip remote secret ref resolution on local call paths
* test(cli): cover qr remote tailscale secret ref resolution
* fix(secrets): align gateway password active-surface with auth inference
* fix(cli): resolve inferred local gateway password refs in qr
* fix(gateway): prefer resolvable remote password over token ref pre-resolution
* test(gateway): cover none and trusted-proxy stale password refs
* docs(secrets): sync qr and gateway active-surface behavior
* fix: restore stability blockers from pre-release audit
* Secrets: fix collector/runtime precedence contradictions
* docs: align secrets and web credential docs
* fix(rebase): resolve integration regressions after main rebase
* fix(node-host): resolve gateway secret refs for auth
* fix(secrets): harden secretinput runtime readers
* gateway: skip inactive auth secretref resolution
* cli: avoid gateway preflight for inactive secret refs
* extensions: allow unresolved refs in onboarding status
* tests: fix qr-cli module mock hoist ordering
* Security: align audit checks with SecretInput resolution
* Gateway: resolve local-mode remote fallback secret refs
* Node host: avoid resolving inactive password secret refs
* Secrets runtime: mark Slack appToken inactive for HTTP mode
* secrets: keep inactive gateway remote refs non-blocking
* cli: include agent memory secret targets in runtime resolution
* docs(secrets): sync docs with active-surface and web search behavior
* fix(secrets): keep telegram top-level token refs active for blank account tokens
* fix(daemon): resolve gateway password secret refs for probe auth
* fix(secrets): skip IRC NickServ ref resolution when NickServ is disabled
* fix(secrets): align token inheritance and exec timeout defaults
* docs(secrets): clarify active-surface notes in cli docs
* cli: require secrets.resolve gateway capability
* gateway: log auth secret surface diagnostics
* secrets: remove dead provider resolver module
* fix(secrets): restore gateway auth precedence and fallback resolution
* fix(tests): align plugin runtime mock typings
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-03-03 02:58:20 +00:00
Peter Steinberger
3e5762c288
fix(security): harden sms.send dangerous-node defaults
2026-03-02 16:06:52 +00:00
Peter Steinberger
cded1b960a
test(commands): dedupe command and onboarding test cases
2026-03-02 07:13:10 +00:00
Clawborn
77ccd35e5e
Fix onboard ignoring OPENCLAW_GATEWAY_TOKEN env var ( #22658 )
...
* Fix onboard ignoring OPENCLAW_GATEWAY_TOKEN env var
When running onboard via docker-setup.sh, the QuickStart wizard
generates its own 48-char token instead of using the 64-char token
already set in OPENCLAW_GATEWAY_TOKEN. This causes a token mismatch
that breaks all CLI commands after setup.
Check process.env.OPENCLAW_GATEWAY_TOKEN before falling back to
randomToken() in both the interactive QuickStart path and the
non-interactive path.
Closes #22638
Co-authored-by: Clawborn <tianrun.yang103@gmail.com >
* Tests: cover quickstart env token fallback
* Changelog: note docker onboarding token parity fix
* Tests: restore env var after non-interactive token fallback test
* Update CHANGELOG.md
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-03-01 19:40:40 -08:00
Peter Steinberger
cef5fae0a2
refactor(gateway): dedupe origin seeding and plugin route auth matching
2026-03-02 00:42:22 +00:00
Peter Steinberger
53d10f8688
fix(gateway): land access/auth/config migration cluster
...
Land #28960 by @Glucksberg (Tailscale origin auto-allowlist).
Land #29394 by @synchronic1 (allowedOrigins upgrade migration).
Land #29198 by @Mariana-Codebase (plugin HTTP auth guard + route precedence).
Land #30910 by @liuxiaopai-ai (tailscale bind/config.patch guard).
Co-authored-by: Glucksberg <markuscontasul@gmail.com >
Co-authored-by: synchronic1 <synchronic1@users.noreply.github.com >
Co-authored-by: Mariana Sinisterra <mariana.data@outlook.com >
Co-authored-by: liuxiaopai-ai <73659136+liuxiaopai-ai@users.noreply.github.com >
2026-03-02 00:10:51 +00:00
joshavant
5e3a86fd2f
feat(secrets): expand onboarding secret-ref flows and custom-provider parity
2026-02-26 14:47:22 +00:00
Peter Steinberger
da53015ef5
fix(onboard): seed Control UI origins for non-loopback binds (land #26157 , thanks @stakeswky)
...
Co-authored-by: 不做了睡大觉 <stakeswky@users.noreply.github.com >
2026-02-26 12:13:20 +00:00
Peter Steinberger
b8bb8ab3ca
docs: clarify personal-by-default onboarding security notice
2026-02-26 02:59:34 +01:00
Peter Steinberger
296b19e413
test: dedupe gateway browser discord and channel coverage
2026-02-22 17:11:54 +00:00
Peter Steinberger
07d09c881d
test(wizard): share onboarding prompter scaffold
2026-02-22 07:44:57 +00:00
Peter Steinberger
b8b43175c5
style: align formatting with oxfmt 0.33
2026-02-18 01:34:35 +00:00
Peter Steinberger
31f9be126c
style: run oxfmt and fix gate failures
2026-02-18 01:29:02 +00:00
Benjamin Jesuiter
daef91800c
Configure: improve searchable model picker token matching
2026-02-17 09:15:55 +01:00
Benjamin Jesuiter
01fcac0726
Configure: make model picker allowlist searchable
2026-02-17 09:15:55 +01:00
cpojer
d0cb8c19b2
chore: wtf.
2026-02-17 13:36:48 +09:00
Sebastian
ed11e93cf2
chore(format)
2026-02-16 23:20:16 -05:00
cpojer
8ece8215aa
chore: Fix types in tests 18/N.
2026-02-17 12:00:29 +09:00
cpojer
01ea808876
chore: Format files.
2026-02-17 10:57:31 +09:00
Gustavo Madeira Santana
0d1eceb9cf
Revert "Onboarding: fix webchat URL loopback and canonical session"
...
This reverts commit 59e0e7e4ff .
2026-02-16 20:30:03 -05:00
cpojer
90ef2d6bdf
chore: Update formatting.
2026-02-17 09:18:40 +09:00
Yash
59e0e7e4ff
Onboarding: fix webchat URL loopback and canonical session
2026-02-16 23:52:00 +01:00
Peter Steinberger
f717a13039
refactor(agent): dedupe harness and command workflows
2026-02-16 14:59:30 +00:00
Peter Steinberger
5c5af2b14e
perf(wizard): lazy-load onboarding deps
2026-02-15 19:29:27 +00:00
Peter Steinberger
01ca3da8ee
refactor(gateway): share tailscale prompt constants
2026-02-15 18:06:48 +00:00
Peter Steinberger
53ffc309f3
refactor(test): simplify onboarding wizard scaffolding
2026-02-15 15:16:55 +00:00
Peter Steinberger
3e7800befb
refactor(test): dedupe onboarding gateway prompter
2026-02-15 15:15:19 +00:00
Peter Steinberger
af34c8fafe
refactor(onboard): share local workspace+gateway config
2026-02-15 14:21:28 +00:00
Peter Steinberger
4950fcfb33
refactor(gateway): share IPv4 input validator
2026-02-15 06:37:41 +00:00
Peter Steinberger
9be114738f
refactor(test): dedupe onboarding tui hatch setup
2026-02-14 20:29:02 +00:00
Peter Steinberger
994bcbf670
refactor: clarify restoreTerminalState stdin resume option
2026-02-14 20:47:00 +01:00
Vincent Koc
a042b32d2f
fix: Docker installation keeps hanging on MacOS ( #12972 )
...
* Onboarding: avoid stdin resume after wizard finish
* Changelog: remove Docker hang entry from PR
* Terminal: make stdin resume behavior explicit at call sites
* CI: rerun format check
* Onboarding: restore terminal before cancel exit
* test(onboard): align restoreTerminalState expectation
* chore(format): align onboarding restore test with updated oxfmt config
* chore(format): enforce updated oxfmt on restore test
* chore(format): apply updated oxfmt spacing to restore test
* fix: avoid stdin resume after onboarding (#12972 ) (thanks @vincentkoc)
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-02-14 19:46:07 +01:00
Omair Afzal
59733a02c8
fix(configure): reject literal "undefined" and "null" gateway auth tokens ( #13767 )
...
* fix(configure): reject literal "undefined" and "null" gateway auth tokens
* fix(configure): reject literal "undefined" and "null" gateway auth tokens
* fix(configure): validate gateway password prompt and harden token coercion (#13767 ) (thanks @omair445)
* test: remove unused vitest imports in baseline lint fixtures (#13767 )
---------
Co-authored-by: Luna AI <luna@coredirection.ai >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-02-13 17:04:41 +01:00
gejifeng
d44c118334
fix: avoid unused custom preferred provider
2026-02-13 15:48:37 +01:00
gejifeng
e6715bcb64
format: fix onboarding.ts wrapping
2026-02-13 15:48:37 +01:00
gejifeng
03c502ef31
lint: fix unused imports and onboarding preferred provider
2026-02-13 15:48:37 +01:00
gejifeng
e73d881c50
Onboarding: add vLLM provider support
2026-02-13 15:48:37 +01:00
Peter Steinberger
ba7dccc49d
test: speed up test suite and trim redundant onboarding tests
2026-02-13 04:30:48 +00:00
Marcus Castro
ec44e262be
fix(security): prevent String(undefined) coercion in credential inputs ( #12287 )
...
* fix(security): prevent String(undefined) coercion in credential inputs
When a prompter returns undefined (due to cancel, timeout, or bug),
String(undefined).trim() produces the literal string "undefined" instead
of "". This truthy string prevents secure fallbacks from triggering,
allowing predictable credential values (e.g., gateway password = "undefined").
Fix all 8 occurrences by using String(value ?? "").trim(), which correctly
yields "" for null/undefined inputs and triggers downstream validation or
fallback logic.
Fixes #8054
* fix(security): also fix String(undefined) in api-provider credential inputs
Address codex review feedback: 4 additional occurrences of the unsafe
String(variable).trim() pattern in auth-choice.apply.api-providers.ts
(Cloudflare Account ID, Gateway ID, synthetic API key inputs + validators).
* fix(test): strengthen password coercion test per review feedback
* fix(security): harden credential prompt coercion
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-02-13 04:25:05 +01:00
Blossom
c0befdee0b
feat(onboard): add custom/local API configuration flow ( #11106 )
...
* feat(onboard): add custom/local API configuration flow
* ci: retry macos check
* fix: expand custom API onboarding (#11106 ) (thanks @MackDing)
* fix: refine custom endpoint detection (#11106 ) (thanks @MackDing)
* fix: streamline custom endpoint onboarding (#11106 ) (thanks @MackDing)
* fix: skip model picker for custom endpoint (#11106 ) (thanks @MackDing)
* fix: avoid allowlist picker for custom endpoint (#11106 ) (thanks @MackDing)
* Onboard: reuse shared fetch timeout helper (#11106 ) (thanks @MackDing)
* Onboard: clarify default base URL name (#11106 ) (thanks @MackDing)
---------
Co-authored-by: OpenClaw Contributor <contributor@openclaw.ai >
Co-authored-by: Gustavo Madeira Santana <gumadeiras@gmail.com >
2026-02-10 07:31:02 -05:00
quotentiroler
53910f3643
Deduplicate more
2026-02-09 18:56:58 -08:00
Peter Steinberger
394d60c1fb
fix(onboarding): auto-install shell completion in QuickStart
2026-02-09 12:56:12 -06:00
Mariano Belinky
730f86dd5c
Gateway/Plugins: device pairing + phone control plugins ( #11755 )
2026-02-08 18:07:13 +01:00
Peter Steinberger
c5194d8148
fix(dashboard): restore tokenized control ui links
2026-02-06 22:17:09 -08:00
Coy Geek
717129f7f9
fix: silence unused hook token url param ( #9436 )
...
* fix: Gateway authentication token exposed in URL query parameters
* fix: silence unused hook token url param
* fix: remove gateway auth tokens from URLs (#9436 ) (thanks @coygeek)
* test: fix Windows path separators in audit test (#9436 )
---------
Co-authored-by: George Pickett <gpickett00@gmail.com >
2026-02-05 18:08:29 -08:00
Shakker
3e14192730
onboard: use shared completion helpers for shell completion setup
...
- Replace inline completion logic with `checkShellCompletionStatus` and `ensureCompletionCacheExists`
- Auto-upgrade old slow dynamic patterns silently during onboarding
- Auto-regenerate cache if profile exists but cache is missing
- Prompt to install if no completion is configured
2026-02-04 19:51:06 +00:00