cdx-manager 0.24.6 → 0.24.7

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/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  <br clear="left"/>
6
6
 
7
- [![License](https://img.shields.io/badge/license-MIT-4C8BF5)](LICENSE) ![Version](https://img.shields.io/badge/version-v0.24.6-4C8BF5) ![Python](https://img.shields.io/badge/python-3.9%2B-3776AB?logo=python&logoColor=white)
7
+ [![License](https://img.shields.io/badge/license-MIT-4C8BF5)](LICENSE) ![Version](https://img.shields.io/badge/version-v0.24.7-4C8BF5) ![Python](https://img.shields.io/badge/python-3.9%2B-3776AB?logo=python&logoColor=white)
8
8
 
9
9
  **The right AI coding account, when you need it.** CDX Manager keeps your Codex and Claude accounts in separate profiles, shows which ones have quota, and helps you pick the next usable session from your terminal.
10
10
 
package/VERSION CHANGED
@@ -1 +1 @@
1
- 0.24.6
1
+ 0.24.7
@@ -0,0 +1,15 @@
1
+ # CDX Manager 0.24.7
2
+
3
+ Release date: 2026-10-29
4
+
5
+ This patch fixes command execution in isolated Codex workspace runs. (#65)
6
+
7
+ ## Workspace runs
8
+
9
+ - Drop Codex's nested sandbox when `--isolate-workspace` is enabled, avoiding the user namespace mapping failure that prevented commands from running. The outer workspace sandbox remains the isolation boundary. (#65)
10
+ - Remove Codex's sandbox mode and network overrides inside the isolated workspace and pass `--dangerously-bypass-approvals-and-sandbox`; the outer sandbox controls network access and keeps review runs read-only through its workspace mount. (#65)
11
+
12
+ ## Maintenance
13
+
14
+ - Record tray companion checksums for v0.24.6. (`87aba5d2cffdfb1a96e386abcdabe54df9ee4808`)
15
+ - Record release archive checksums for v0.24.6. (`6b92094143ea28bf0cc096aef88d1015565aba18`)
@@ -639,6 +639,17 @@
639
639
  "x86_64-pc-windows-msvc": "74124b2e40a58a58b55724ef453c4b543a83eefab9a5f92685b239c5d97e7f67",
640
640
  "x86_64-unknown-linux-musl": "089e552a4dfae4080a2e76cedb6fe72fc8013a9cd08cf3c8b333f916198da57c"
641
641
  }
642
+ },
643
+ "v0.24.6": {
644
+ "github_tarball_sha256": "4b61861ae26fc7904e751571b65d0783c16dcf35d3b485379434469e27511fb4",
645
+ "github_zip_sha256": "6c5cfa2139eb53a20a8eca8624437a06b18392b0df7774d9c7c64a74b8066f59",
646
+ "tray_assets": {
647
+ "aarch64-apple-darwin": "7200f658e3413b2614a7ffa5d03e1dac173fc1a653dc659d92f2bef40f2bf5d4",
648
+ "aarch64-unknown-linux-musl": "b892a9a3bf009e5069dc798ab910b20e77ac9d03b9b575a80cb19af1dc13533a",
649
+ "x86_64-apple-darwin": "d1e1b619feab8eae1e2a25e17942d8d690fc1e6184f294599a15858a1f0c146e",
650
+ "x86_64-pc-windows-msvc": "0d125d8e0f7d9880a2ed9e0a794964f3d69ef3353b90a1d594b17f9392a0a0af",
651
+ "x86_64-unknown-linux-musl": "d6c369ace10a6d373366cd12e4e6cd7f2fd278fbce2fd9a13c5bf51047847441"
652
+ }
642
653
  }
643
654
  }
644
655
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cdx-manager",
3
- "version": "0.24.6",
3
+ "version": "0.24.7",
4
4
  "description": "Terminal session manager for Codex and Claude accounts.",
5
5
  "license": "MIT",
6
6
  "author": "Alexandre Agostini",
package/pyproject.toml CHANGED
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "cdx-manager"
7
- version = "0.24.6"
7
+ version = "0.24.7"
8
8
  description = "Terminal session manager for Codex and Claude accounts."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -1212,7 +1212,10 @@ def _run_headless_provider_command(session, cwd=None, env_override=None, initial
1212
1212
  )
1213
1213
  launch = session.get("launch") or {}
1214
1214
  if launch.get("network_access"):
1215
- if session.get("provider") == PROVIDER_CODEX:
1215
+ if session.get("provider") == PROVIDER_CODEX and launch.get("isolate_workspace"):
1216
+ # The outer sandbox owns the network; Codex's own sandbox is dropped below.
1217
+ pass
1218
+ elif session.get("provider") == PROVIDER_CODEX:
1216
1219
  # Keep the workspace sandbox; append overrides before the prompt separator.
1217
1220
  index = spec["args"].index("--") if "--" in spec["args"] else len(spec["args"])
1218
1221
  spec["args"][index:index] = ["-c", 'sandbox_workspace_write.network_access=true', '-c', 'sandbox_workspace_write.writable_roots=["/cache", "/home/agent"]']
@@ -1226,6 +1229,17 @@ def _run_headless_provider_command(session, cwd=None, env_override=None, initial
1226
1229
  # The outer OS sandbox is the permission boundary for unattended Bash.
1227
1230
  index = spec["args"].index("--") if "--" in spec["args"] else len(spec["args"])
1228
1231
  spec["args"][index:index] = ["--permission-mode", "bypassPermissions"]
1232
+ elif session.get("provider") == PROVIDER_CODEX:
1233
+ # Codex's bubblewrap sandbox cannot nest inside ours (no uid map), so the
1234
+ # outer box is the boundary: drop `-s <mode>` and bypass the inner one.
1235
+ # A review run stays read-only through the outer mount.
1236
+ args = spec["args"]
1237
+ while "-s" in args:
1238
+ index = args.index("-s")
1239
+ del args[index:index + 2]
1240
+ if "--dangerously-bypass-approvals-and-sandbox" not in args:
1241
+ index = args.index("--") if "--" in args else len(args)
1242
+ args[index:index] = ["--dangerously-bypass-approvals-and-sandbox"]
1229
1243
  try:
1230
1244
  argv, child_env = sandbox_command(
1231
1245
  [spec["command"], *spec["args"]], Path(cwd),