Skip to content

Commit ec04ee5

Browse files
authored
Merge branch 'main' into fix/issue-67488-cron-serialization-special-chars
2 parents 536e2bc + d74533c commit ec04ee5

6 files changed

Lines changed: 18 additions & 18 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ Docs: https://docs.openclaw.ai
3232
- WhatsApp/web-session: drain the pending per-auth creds save queue before reopening sockets so reconnect-time auth bootstrap no longer races in-flight `creds.json` writes and falsely restores from backup. (#67464) Thanks @neeravmakwana.
3333
- BlueBubbles/catchup: add a per-message retry ceiling (`catchup.maxFailureRetries`, default 10) so a persistently-failing message with a malformed payload no longer wedges the catchup cursor forever. After N consecutive `processMessage` failures against the same GUID, catchup logs a WARN, skips that message on subsequent sweeps, and lets the cursor advance past it. Transient failures still retry from the same point as before. Also fixes a lost-update race in the persistent dedupe file lock that silently dropped inbound GUIDs on concurrent writes, a dedupe file naming migration gap on version upgrade, and a balloon-event bypass that let catchup replay debouncer-coalesced events as standalone messages. (#67426, #66870) Thanks @omarshahine.
3434
- Ollama/chat: strip the `ollama/` provider prefix from Ollama chat request model ids so configured refs like `ollama/qwen3:14b-q8_0` stop 404ing against the Ollama API. (#67457) Thanks @suboss87.
35-
- QA/Matrix: split the private QA lab runtime into smaller tested modules, add Matrix media contract coverage for image understanding and generated-image delivery, and update the memory-dreaming QA sweep to assert the separate phase-report layout. (#67430) Thanks @gumadeiras.
3635
- Agents/tools: resolve non-workspace host tilde paths against the OS home directory and keep edit recovery aligned with that same path target, so `~/...` host edit/write operations stop failing or reading back the wrong file when `OPENCLAW_HOME` differs. (#62804) Thanks @stainlu.
3736
- Speech/TTS: auto-enable the bundled Microsoft and ElevenLabs speech providers, and route generic TTS directive tokens through the explicit or active provider first so overrides like `[[tts:speed=1.2]]` stop silently landing on the wrong provider. (#62846) Thanks @stainlu.
3837
- OpenAI Codex/models: normalize stale native transport metadata in both runtime resolution and discovery/listing so legacy `openai-codex` rows with missing `api` or `https://chatgpt.com/backend-api/v1` self-heal to the canonical Codex transport instead of routing requests through broken HTML/Cloudflare paths, combining the original fixes proposed in #66969 (saamuelng601-pixel) and #67159 (hclsys). (#67635)
@@ -43,6 +42,7 @@ Docs: https://docs.openclaw.ai
4342
- Extensions/lmstudio: add exponential backoff to the inference-preload wrapper so an LM Studio model-load failure (for example the built-in memory guardrail rejecting a load because the swap is saturated) no longer produces a WARN line every ~2s for every chat request. The wrapper now records consecutive preload failures per `(baseUrl, modelKey, contextLength)` tuple with a 5s → 10s → 20s → … → 5min cooldown and skips the preload step entirely while a cooldown is active, letting chat requests proceed directly to the stream (the model is often already loaded via the LM Studio UI). The combined `preload failed` log line now reports consecutive-failure count and remaining cooldown so operators can act on the real issue instead of drowning in repeated warnings. (#67401) Thanks @xantorres.
4443
- Agents/replay: re-run tool/result pairing after strict replay tool-call ID sanitization on outbound requests so Anthropic-compatible providers like MiniMax no longer receive malformed orphan tool-result IDs such as `...toolresult1` during compaction and retry flows. (#67620) Thanks @stainlu.
4544
- Gateway/startup: fix spurious SIGUSR1 restart loop on Linux/systemd when plugin auto-enable is the only startup config write; the config hash guard was not captured for that write path, causing chokidar to treat each boot write as an external change and trigger a reload → restart cycle that corrupts manifest.db after repeated cycles. Fixes #67436. (#67557) thanks @openperf
45+
- OpenAI Codex/CLI: keep resumed `codex exec resume` runs on the safe non-interactive path without reintroducing the removed dangerous bypass flag by passing the supported `--skip-git-repo-check` resume arg that real Codex CLI requires outside trusted git directories. (#67666) Thanks @plgonzalezrx8.
4646

4747
## 2026.4.15-beta.1
4848

docs/gateway/cli-backends.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ The bundled OpenAI plugin also registers a default for `codex-cli`:
221221

222222
- `command: "codex"`
223223
- `args: ["exec","--json","--color","never","--sandbox","workspace-write","--skip-git-repo-check"]`
224-
- `resumeArgs: ["exec","resume","{sessionId}","--color","never","--sandbox","workspace-write","--skip-git-repo-check"]`
224+
- `resumeArgs: ["exec","resume","{sessionId}","--skip-git-repo-check"]`
225225
- `output: "jsonl"`
226226
- `resumeOutput: "text"`
227227
- `modelArg: "--model"`

extensions/openai/cli-backend.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export function buildOpenAICodexCliBackend(): CliBackendPlugin {
3131
"workspace-write",
3232
"--skip-git-repo-check",
3333
],
34-
resumeArgs: ["exec", "resume", "{sessionId}", "--dangerously-bypass-approvals-and-sandbox"],
34+
resumeArgs: ["exec", "resume", "{sessionId}", "--skip-git-repo-check"],
3535
output: "jsonl",
3636
resumeOutput: "text",
3737
input: "arg",

src/agents/cli-backends.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ beforeEach(() => {
244244
"workspace-write",
245245
"--skip-git-repo-check",
246246
],
247-
resumeArgs: ["exec", "resume", "{sessionId}", "--dangerously-bypass-approvals-and-sandbox"],
247+
resumeArgs: ["exec", "resume", "{sessionId}", "--skip-git-repo-check"],
248248
systemPromptFileConfigArg: "-c",
249249
systemPromptFileConfigKey: "model_instructions_file",
250250
systemPromptWhen: "first",
@@ -309,7 +309,7 @@ beforeEach(() => {
309309
});
310310

311311
describe("resolveCliBackendConfig reliability merge", () => {
312-
it("defaults codex-cli to workspace-write for fresh and resume runs", () => {
312+
it("defaults codex-cli fresh sandboxing and resume trust bypass for non-git runs", () => {
313313
const resolved = resolveCliBackendConfig("codex-cli");
314314

315315
expect(resolved).not.toBeNull();
@@ -326,7 +326,7 @@ describe("resolveCliBackendConfig reliability merge", () => {
326326
"exec",
327327
"resume",
328328
"{sessionId}",
329-
"--dangerously-bypass-approvals-and-sandbox",
329+
"--skip-git-repo-check",
330330
]);
331331
});
332332

src/agents/cli-runner.spawn.test.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ function buildPreparedCliRunContext(params: {
5353
: {
5454
command: "codex",
5555
args: ["exec", "--json"],
56-
resumeArgs: ["exec", "resume", "{sessionId}", "--json"],
56+
resumeArgs: ["exec", "resume", "{sessionId}", "--skip-git-repo-check"],
5757
output: "text" as const,
5858
input: "arg" as const,
5959
modelArg: "--model",
@@ -435,7 +435,16 @@ describe("runCliAgent spawn path", () => {
435435
scopeKey?: string;
436436
};
437437
expect(input.mode).toBe("child");
438-
expect(input.argv?.[0]).toBe("codex");
438+
expect(input.argv).toEqual([
439+
"codex",
440+
"exec",
441+
"resume",
442+
"thread-123",
443+
"--skip-git-repo-check",
444+
"--model",
445+
"gpt-5.4",
446+
"hi",
447+
]);
439448
expect(input.timeoutMs).toBe(1_000);
440449
expect(input.noOutputTimeoutMs).toBeGreaterThanOrEqual(1_000);
441450
expect(input.replaceExistingScope).toBe(true);

src/agents/cli-runner.test-support.ts

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -120,16 +120,7 @@ function buildOpenAICodexCliBackendFixture(): CliBackendPlugin {
120120
"workspace-write",
121121
"--skip-git-repo-check",
122122
],
123-
resumeArgs: [
124-
"exec",
125-
"resume",
126-
"{sessionId}",
127-
"--color",
128-
"never",
129-
"--sandbox",
130-
"workspace-write",
131-
"--skip-git-repo-check",
132-
],
123+
resumeArgs: ["exec", "resume", "{sessionId}", "--skip-git-repo-check"],
133124
output: "jsonl",
134125
resumeOutput: "text",
135126
input: "arg",

0 commit comments

Comments
 (0)