@minhspark/codex-mcp-bridge 1.19.5 → 1.19.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,12 @@ Follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and [SemVer](ht
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [1.19.6] - 2026-10-02
8
+
9
+ ### Fixed
10
+
11
+ - Make newly created Linux and macOS managed Codex policies readable by the account running Codex. Repair an existing valid policy that was created with restrictive file permissions, so Full access + Never works after administrator setup and remains repairable on later bridge starts.
12
+
7
13
  ## [1.19.5] - 2026-10-02
8
14
 
9
15
  ### Added
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@minhspark/codex-mcp-bridge",
3
- "version": "1.19.5",
3
+ "version": "1.19.6",
4
4
  "description": "Two-way MCP bridge between Claude and Codex: prompts into a live Codex thread, messages into a running Claude Code session.",
5
5
  "keywords": [
6
6
  "mcp",
@@ -23,7 +23,7 @@ import { enableCodexFullAccess, fullAccessEnabled } from "../src/codex-full-acce
23
23
 
24
24
  exitForVersionRequest(import.meta.url);
25
25
 
26
- const VERSION = "1.19.5";
26
+ const VERSION = "1.19.6";
27
27
  const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
28
28
  const entry = path.join(root, "src", "mcp-supervisor.mjs");
29
29
  const entryArgs = ["native-relay-companion.mjs"];
@@ -26,7 +26,7 @@ import { AGENT_PROMPT_GUIDANCE, PROMPT_FIELD_HINT } from "./prompt-guidance.mjs"
26
26
 
27
27
  exitForVersionRequest(import.meta.url);
28
28
 
29
- const VERSION = "1.19.5";
29
+ const VERSION = "1.19.6";
30
30
  void import("./telemetry.mjs").then(({ startUsageReporting }) => startUsageReporting({ version: VERSION })).catch(() => {});
31
31
  const FORWARD_MIN_INTERVAL_MS = 5000;
32
32
  const FORWARD_MAX_PER_SESSION = 50;
@@ -112,9 +112,18 @@ export function applyFullAccessPolicy(filePath = codexAccessPaths().policy) {
112
112
  }
113
113
  const previous = fs.existsSync(filePath) ? fs.readFileSync(filePath, "utf8") : "";
114
114
  const next = fullAccessPolicyContents(previous);
115
- if (next === previous) return false;
115
+ const needsReadAccess = process.platform !== "win32" && fs.existsSync(filePath) &&
116
+ (fs.statSync(filePath).mode & 0o444) !== 0o444;
117
+ if (next === previous && !needsReadAccess) return false;
116
118
  fs.mkdirSync(path.dirname(filePath), { recursive: true });
117
- return withUnlockedPolicy(filePath, () => writeIfChanged(filePath, previous, fullAccessPolicyContents));
119
+ return withUnlockedPolicy(filePath, () => {
120
+ const changed = writeIfChanged(filePath, previous, fullAccessPolicyContents);
121
+ if (process.platform !== "win32") {
122
+ const mode = fs.statSync(filePath).mode;
123
+ if ((mode & 0o444) !== 0o444) fs.chmodSync(filePath, mode | 0o444);
124
+ }
125
+ return changed || needsReadAccess;
126
+ });
118
127
  }
119
128
 
120
129
  function shellQuote(value) {
package/src/index.mjs CHANGED
@@ -35,7 +35,7 @@ import { AGENT_PROMPT_GUIDANCE, PROMPT_FIELD_HINT } from "./prompt-guidance.mjs"
35
35
 
36
36
  exitForVersionRequest(import.meta.url);
37
37
 
38
- const VERSION = "1.19.5";
38
+ const VERSION = "1.19.6";
39
39
  void import("./telemetry.mjs").then(({ startUsageReporting }) => startUsageReporting({ version: VERSION })).catch(() => {});
40
40
  const log = (msg) => process.stderr.write(`[codex-mcp-bridge] ${msg}\n`);
41
41
 
@@ -34,7 +34,7 @@ import { createHardenedRootPolicy } from "./hardened-root-policy.mjs";
34
34
 
35
35
  exitForVersionRequest(import.meta.url);
36
36
 
37
- const VERSION = "1.19.5";
37
+ const VERSION = "1.19.6";
38
38
  const log = (msg) => process.stderr.write(`[native-relay] ${msg}\n`);
39
39
 
40
40
  function errorResponse(code, message, sent) {