Skip to content

Commit ae893b3

Browse files
committed
Auto-merge upstream openclaw/openclaw
2 parents 0b74f85 + 723dec0 commit ae893b3

57 files changed

Lines changed: 3553 additions & 65 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,13 @@ Docs: https://docs.openclaw.ai
1111
- Docs i18n: chunk raw doc translation, reject truncated tagged outputs, avoid ambiguous body-only wrapper unwrapping, and recover from terminated Pi translation sessions without changing the default `openai/gpt-5.4` path. (#62969, #63808) Thanks @hxy91819.
1212
- QA/testing: add a `--runner multipass` lane for `openclaw qa suite` so repo-backed QA scenarios can run inside a disposable Linux VM and write back the usual report, summary, and VM logs. (#63426) Thanks @shakkernerd.
1313
- Gateway: split startup and runtime seams so gateway lifecycle sequencing, reload state, and shutdown behavior stay easier to maintain without changing observed behavior. (#63975) Thanks @gumadeiras.
14+
- CLI/exec policy: add a local `openclaw exec-policy` command with `show`, `preset`, and `set` subcommands for synchronizing requested `tools.exec.*` config with the local exec approvals file, plus follow-up hardening for node-host rejection, rollback safety, and sync conflict detection.
15+
- Models/providers: add per-provider `models.providers.*.request.allowPrivateNetwork` for trusted self-hosted OpenAI-compatible endpoints, keep the opt-in scoped to model request surfaces, and refresh cached WebSocket managers when request transport overrides change. (#63671) Thanks @qas.
16+
- Gateway: add a `commands.list` RPC so remote gateway clients can discover runtime-native, text, skill, and plugin commands with surface-aware naming and serialized argument metadata. (#62656) Thanks @samzong.
1417

1518
### Fixes
1619

20+
- fix(infra): expand host env security policy denylist [AI]. (#63277) Thanks @pgondhi987.
1721
- fix(agents): guard nodes tool outPath against workspace boundary [AI-assisted]. (#63551) Thanks @pgondhi987.
1822
- fix(qqbot): enforce media storage boundary for all outbound local file paths [AI]. (#63271) Thanks @pgondhi987.
1923
- iMessage/self-chat: distinguish normal DM outbound rows from true self-chat using `destination_caller_id` plus chat participants, while preserving multi-handle self-chat aliases so outbound DM replies stop looping back as inbound messages. (#61619) Thanks @neeravmakwana.

apps/macos/Sources/OpenClaw/HostEnvSanitizer.swift

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ struct HostEnvOverrideDiagnostics: Equatable {
88
enum HostEnvSanitizer {
99
/// Generated from src/infra/host-env-security-policy.json via scripts/generate-host-env-security-policy-swift.mjs.
1010
/// Parity is validated by src/infra/host-env-security.policy-parity.test.ts.
11+
private static let blockedInheritedKeys = HostEnvSecurityPolicy.blockedInheritedKeys
12+
private static let blockedInheritedPrefixes = HostEnvSecurityPolicy.blockedInheritedPrefixes
1113
private static let blockedKeys = HostEnvSecurityPolicy.blockedKeys
1214
private static let blockedPrefixes = HostEnvSecurityPolicy.blockedPrefixes
1315
private static let blockedOverrideKeys = HostEnvSecurityPolicy.blockedOverrideKeys
@@ -28,6 +30,11 @@ enum HostEnvSanitizer {
2830
return self.blockedPrefixes.contains(where: { upperKey.hasPrefix($0) })
2931
}
3032

33+
private static func isBlockedInherited(_ upperKey: String) -> Bool {
34+
if self.blockedInheritedKeys.contains(upperKey) { return true }
35+
return self.blockedInheritedPrefixes.contains(where: { upperKey.hasPrefix($0) })
36+
}
37+
3138
private static func isBlockedOverride(_ upperKey: String) -> Bool {
3239
if self.blockedOverrideKeys.contains(upperKey) { return true }
3340
return self.blockedOverridePrefixes.contains(where: { upperKey.hasPrefix($0) })
@@ -113,7 +120,7 @@ enum HostEnvSanitizer {
113120
let key = rawKey.trimmingCharacters(in: .whitespacesAndNewlines)
114121
guard !key.isEmpty else { continue }
115122
let upper = key.uppercased()
116-
if self.isBlocked(upper) { continue }
123+
if self.isBlockedInherited(upper) { continue }
117124
merged[key] = value
118125
}
119126

0 commit comments

Comments
 (0)