@monoes/monomindcli 2.16.9 → 2.16.11

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.
@@ -11,7 +11,8 @@
11
11
  * ('read'/'none') or its config + hooks ('commit'), the guard's hooks,
12
12
  * local-path remotes, and git/shell/Claude config that would undo the guard
13
13
  * (a denied directory holding the cwd or ~/.claude goes in as its existing
14
- * children, #323 — sandbox-deny-write.ts);
14
+ * children, #323, unless it is the cwd and the runtime holds every stub
15
+ * in it — sandbox-deny-write.ts);
15
16
  * - network: every host allowed (`policy.sandbox.allowedDomains`, default
16
17
  * ['*']) minus the opt-in `policy.sandbox.deniedDomains`, deterministically,
17
18
  * with local binding kept for dev servers and tests. Git remote hosts are
@@ -160,8 +161,11 @@ export function buildClaudeRestrictions(guard, cfg, ctx, sandboxEnabled) {
160
161
  if (!sandboxEnabled)
161
162
  return { disallowedTools };
162
163
  const allowWrite = uniq([ctx.cwd, ctx.orgRoot, home, tmp, ...(cfg?.allowWrite ?? [])]);
164
+ // Stubs first: with all of the cwd's in place, bwrap creates nothing there.
165
+ const missingStubs = (ctx.platform ?? process.platform) === 'linux' ? ctx.holdStubs?.(allowWrite) : undefined;
163
166
  // #323: a read-only directory holding the cwd or ~/.claude breaks the SDK's
164
- // own stub mounts — pass its children instead (sandbox-deny-write.ts).
167
+ // own stub mounts — pass its children instead, unless it is the cwd and the
168
+ // runtime holds every stub in it (sandbox-deny-write.ts).
165
169
  const expanded = expandDenyWrite(uniq([
166
170
  guard.dir,
167
171
  ...(lockedRepo ? gitDirs : gitDirs.flatMap((d) => [join(d, 'config'), join(d, 'hooks')])),
@@ -169,7 +173,7 @@ export function buildClaudeRestrictions(guard, cfg, ctx, sandboxEnabled) {
169
173
  ...HOME_DENY_WRITE.map((p) => join(home, p)),
170
174
  ...decisionFilePaths(ctx.orgRoot),
171
175
  ...roleDenyWrite,
172
- ]), [ctx.cwd, join(home, '.claude')], ctx.platform);
176
+ ]), [ctx.cwd, join(home, '.claude')], ctx.platform, missingStubs && { cwd: ctx.cwd, writableRoots: allowWrite, missingStubs });
173
177
  const sandbox = {
174
178
  enabled: true,
175
179
  failIfUnavailable: true,
@@ -316,7 +320,7 @@ export function resolveRoleGitEnforcement(args) {
316
320
  ? { NODE_USE_ENV_PROXY: '1' }
317
321
  : {}),
318
322
  },
319
- claudeRestrictions: buildClaudeRestrictions(guard, cfg, { cwd: args.cwd, orgRoot: args.orgRoot }, sandboxEnabled),
323
+ claudeRestrictions: buildClaudeRestrictions(guard, cfg, { cwd: args.cwd, orgRoot: args.orgRoot, holdStubs: args.holdStubs }, sandboxEnabled),
320
324
  };
321
325
  }
322
326
  const PROVIDER_RUNTIME = {
@@ -1 +1 @@
1
- {"version":3,"file":"role-sandbox.js","sourceRoot":"","sources":["../../../src/orgrt/role-sandbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"role-sandbox.js","sourceRoot":"","sources":["../../../src/orgrt/role-sandbox.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACzE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1E,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,yBAAyB,EACzB,cAAc,EACd,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,cAAc,EACd,eAAe,EACf,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAGL,YAAY,EACZ,mBAAmB,EACnB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAuBxE,SAAS,MAAM,CAAC,GAAW,EAAE,GAAsB;IACjD,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QACpD,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,IAAI,CAAC;YACH,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,cAAc;QAChB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;6EAC6E;AAC7E,MAAM,UAAU,mBAAmB,CACjC,GAAG,GAAsB,OAAO,CAAC,GAAG,EACpC,QAAQ,GAAoB,OAAO,CAAC,QAAQ;IAE5C,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAClE,OAAO,OAAO,CAAC,MAAM;YACnB,CAAC,CAAC;gBACE,SAAS,EAAE,KAAK;gBAChB,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,mDAAmD;aACpF;YACH,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC;IACD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,UAAU,CAAC,uBAAuB,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;YACpD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,iCAAiC,EAAE,CAAC;QACzE,CAAC;IACH,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,uCAAuC,QAAQ,EAAE,EAAE,CAAC;AACzF,CAAC;AAED;;;;mEAImE;AACnE,SAAS,gBAAgB,CAAC,IAAY,EAAE,GAAsB,EAAE,GAAW;IACzE,MAAM,KAAK,GAAG;QACZ,GAAG,CAAC,aAAa,IAAI,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;QAClF,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC;QACxB,gBAAgB;QAChB,GAAG,cAAc;KAClB,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC;gBAAE,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;oBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACvF,CAAC;QAAC,MAAM,CAAC;YACP,iDAAiD;QACnD,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,IAAI,GAAG,CAAC,EAA6B,EAAY,EAAE,CAAC;IACxD,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC/C,CAAC;AACF;;;0DAG0D;AAC1D,MAAM,QAAQ,GAAG,CAAC,EAA6B,EAAY,EAAE,CAC3D,IAAI,CACF,IAAI,CAAC,EAAE,CAAC;KACL,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KAC5B,GAAG,CAAC,UAAU,CAAC,CACnB,CAAC;AACJ;;;iEAGiE;AACjE,SAAS,UAAU,CAAC,CAAS;IAC3B,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,CAAC;QACH,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC;IAChB,CAAC;AACH,CAAC;AACD,+DAA+D;AAC/D,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,GAAW,EAAE,EAAE,CAAC,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC;AAE/D,MAAM,UAAU,uBAAuB,CACrC,KAAe,EACf,GAAkC,EAClC,GAUC,EACD,cAAuB;IAEvB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC;IACnC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC;IAChC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACnC,MAAM,WAAW,GAAG,GAAG,EAAE,gBAAgB,IAAI,IAAI,CAAC;IAClD,MAAM,OAAO,GAAG,KAAK,CAAC,gBAAgB,CAAC;IACvC,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC;IACpE,0EAA0E;IAC1E,4EAA4E;IAC5E,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAE5F,MAAM,eAAe,GAAG;QACtB,GAAG,4BAA4B;QAC/B,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;QAC/B,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CACvB,UAAU;YACR,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAC9E;QACD,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,oEAAoE;QACpE,2DAA2D;QAC3D,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAC7C,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;YACtD,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;SACvD,CAAC;QACF,GAAG,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9F,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3E,mEAAmE;QACnE,GAAG,CAAC,GAAG,CAAC,OAAO;YACb,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACvB,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,OAAiB,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CACvE;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IACF,IAAI,CAAC,cAAc;QAAE,OAAO,EAAE,eAAe,EAAE,CAAC;IAEhD,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACvF,4EAA4E;IAC5E,MAAM,YAAY,GAChB,CAAC,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3F,4EAA4E;IAC5E,4EAA4E;IAC5E,0DAA0D;IAC1D,MAAM,QAAQ,GAAG,eAAe,CAC9B,IAAI,CAAC;QACH,KAAK,CAAC,GAAG;QACT,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QACzF,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC;QACvC,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5C,GAAG,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC;QACjC,GAAG,aAAa;KACjB,CAAC,EACF,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,EAChC,GAAG,CAAC,QAAQ,EACZ,YAAY,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,CAC1E,CAAC;IACF,MAAM,OAAO,GAAG;QACd,OAAO,EAAE,IAAI;QACb,iBAAiB,EAAE,IAAI;QACvB,wBAAwB,EAAE,KAAK;QAC/B,wBAAwB,EAAE,KAAK;QAC/B,OAAO,EAAE;YACP,cAAc,EAAE,GAAG,EAAE,cAAc,IAAI,CAAC,GAAG,CAAC;YAC5C,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE,aAAa,IAAI,EAAE,CAAC;YAC7C,eAAe,EAAE,IAAI;YACrB,iBAAiB,EAAE,IAAI;YACvB,mBAAmB,EAAE,WAAW;SACjC;QACD,UAAU,EAAE;YACV,UAAU,EAAE,IAAI,CAAC;gBACf,GAAG,UAAU;gBACb,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;aACnE,CAAC;YACF,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;YACvC,QAAQ,EAAE,QAAQ,CAAC;gBACjB,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1C,UAAU,CAAC,GAAG,CAAC;gBACf,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxD,GAAG,wBAAwB,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;gBACnD,GAAG,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC;aAC5B,CAAC;SACH;QACD,WAAW,EAAE;YACX,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACvE,IAAI;gBACJ,IAAI,EAAE,MAAM;aACb,CAAC,CAAC;SACJ;KACF,CAAC;IACF,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;AACtC,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAuB,CAAC;AACnD,SAAS,SAAS,CAChB,GAAW,EACX,IAAY,EACZ,MAAc,EACd,GAAW,EACX,IAA6B;IAE7B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,MAAM,EAAE,CAAC;QAAE,OAAO;IAC1C,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,MAAM,EAAE,CAAC,CAAC;IAC9B,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,WAAW,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAUjC;IACC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,yBAAyB,EAAE,CAAC;IACtE,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;QAC5B,SAAS,CACP,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,MAAM,EACX,4BAA4B,EAC5B,yCAAyC,IAAI,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,+IAA+I,EAC3N,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,CAChC,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,iBAAiB,CAAC;QACvB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,OAAO,EAAE;QAC5B,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG;QAC5B,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC;QAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAczC;IACC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC3B,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,MAAM,CAAa,CAAC;IACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM;QAC1B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtD,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACtF,MAAM,KAAK,GAAG,CAAC,0BAAmC,EAAE,EAAE,CACpD,eAAe,CAAC;QACd,KAAK;QACL,QAAQ;QACR,0BAA0B;QAC1B,gBAAgB,EAAE,IAAI,CAAC;YACrB,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;YACtB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;SACtD,CAAC;KACH,CAAC,CAAC;IACL,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IACzB,IAAI,CAAC,KAAK;QACR,OAAO,IAAI,CAAC,aAAa;YACvB,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,eAAe,EAAE,CAAC,GAAG,4BAA4B,CAAC,EAAE,EAAE;YACzF,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;IAClB,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EAAE,CAAC;IAEjE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,YAAY,CAAC;QAC7C,qEAAqE;QACrE,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,OAAO,EAAE,CAAC;YACZ,SAAS,CACP,GAAG,EACH,IAAI,CAAC,EAAE,EACP,iBAAiB,EACjB,eAAe,KAAK,gBAAgB,OAAO,iCAAiC,OAAO,4NAA4N,EAC/S,IAAI,CACL,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,SAAS,CACP,GAAG,EACH,IAAI,CAAC,EAAE,EACP,iCAAiC,EACjC,eAAe,KAAK,gBAAgB,OAAO,2GAA2G,EACtJ,IAAI,CACL,CAAC;QACJ,CAAC;QACD,oEAAoE;QACpE,yEAAyE;QACzE,wEAAwE;QACxE,kEAAkE;QAClE,IAAI,IAAI,CAAC,OAAO,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC;YAC1E,SAAS,CACP,GAAG,EACH,IAAI,CAAC,EAAE,EACP,qBAAqB,EACrB,eAAe,KAAK,oLAAoL,EACxM,IAAI,CACL,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,OAAwC,CAAC;IAClE,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,MAAM,CAAC;IACjC,IAAI,cAAc,GAAG,IAAI,KAAK,KAAK,CAAC;IACpC,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACnB,SAAS,CACP,GAAG,EACH,IAAI,CAAC,EAAE,EACP,iBAAiB,EACjB,0CAA0C,KAAK,+FAA+F,EAC9I,IAAI,CACL,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,mBAAmB,EAAE,CAAC;QAChE,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;YAC5B,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;gBACxB,MAAM,GAAG,GAAG,qEAAqE,YAAY,CAAC,MAAM,8BAA8B,IAAI,CAAC,EAAE,EAAE,CAAC;gBAC5I,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,sBAAsB,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;gBAC3D,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;YACvB,CAAC;YACD,SAAS,CACP,GAAG,EACH,IAAI,CAAC,EAAE,EACP,yBAAyB,EACzB,2BAA2B,YAAY,CAAC,MAAM,kBAAkB,KAAK,qLAAqL,EAC1P,IAAI,CACL,CAAC;YACF,cAAc,GAAG,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;IACD,0EAA0E;IAC1E,iEAAiE;IACjE,IAAI,cAAc;QAAE,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;IACjD,OAAO;QACL,uEAAuE;QACvE,sEAAsE;QACtE,2EAA2E;QAC3E,4EAA4E;QAC5E,+DAA+D;QAC/D,GAAG,EAAE;YACH,GAAG,KAAK,CAAC,GAAG;YACZ,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,SAAS;gBAChE,CAAC,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE;gBAC7B,CAAC,CAAC,EAAE,CAAC;SACR;QACD,kBAAkB,EAAE,uBAAuB,CACzC,KAAK,EACL,GAAG,EACH,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EACnE,cAAc,CACf;KACF,CAAC;AACJ,CAAC;AAED,MAAM,gBAAgB,GAA2B;IAC/C,gBAAgB,EAAE,QAAQ;IAC1B,KAAK,EAAE,OAAO;IACd,WAAW,EAAE,aAAa;CAC3B,CAAC;AAEF;yCACyC;AACzC,MAAM,UAAU,sBAAsB,CACpC,GAAW,EACX,YAAY,GAAwB,mBAAmB,EAAE;IAEzD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAK,IAA0B,CAAC,IAAI,KAAK,UAAU;YAAE,SAAS;QAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC;QACzC,IAAI,KAAK,KAAK,MAAM;YAAE,SAAS;QAC/B,MAAM,OAAO,GACX,IAAI,CAAC,OAAO;YACZ,GAAG,CAAC,OAAO;YACX,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,gBAAgB;YAC5B,QAAQ,CAAC;QACX,MAAM,IAAI,GAAI,IAAI,CAAC,MAAM,EAAE,OAAyC,EAAE,IAAI,IAAI,MAAM,CAAC;QACrF,IAAI,iBAAiB,CAAC,OAAO,CAAC;YAC5B,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK,OAAO,KAAK,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;aACzE,IAAI,OAAO,KAAK,QAAQ;YAAE,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK,OAAO,GAAG,CAAC,CAAC;aACtE,IAAI,IAAI,KAAK,KAAK;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACtC,IAAI,CAAC,YAAY,CAAC,SAAS,IAAI,IAAI,KAAK,UAAU;YACrD,MAAM,CAAC,IAAI,CACT,QAAQ,IAAI,CAAC,EAAE,uEAAuE,YAAY,CAAC,MAAM,mCAAmC,CAC7I,CAAC;aACC,IAAI,CAAC,YAAY,CAAC,SAAS;YAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,WAAW,CAAC,MAAM;QACpB,QAAQ,CAAC,IAAI,CACX,sHAAsH,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC/I,CAAC;IACJ,IAAI,YAAY,CAAC,MAAM;QACrB,QAAQ,CAAC,IAAI,CACX,qIAAqI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC/J,CAAC;IACJ,IAAI,WAAW,CAAC,MAAM;QACpB,QAAQ,CAAC,IAAI,CACX,wCAAwC,YAAY,CAAC,MAAM,sBAAsB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,qEAAqE,CAC7K,CAAC;IACJ,IAAI,GAAG,CAAC,MAAM;QACZ,QAAQ,CAAC,IAAI,CACX,iCAAiC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,2CAA2C,CAC3F,CAAC;IACJ,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC9B,CAAC"}
@@ -12,21 +12,42 @@
12
12
  * Read-only file system" and the role's Bash call fails. It only worked while
13
13
  * another sandboxed process happened to hold the stub.
14
14
  *
15
- * So such a directory is never passed as a deny. It is replaced by its
15
+ * So such a directory is not passed as a deny. It is replaced by its
16
16
  * existing children, each read-only (a child that itself contains the cwd or
17
17
  * ~/.claude is expanded the same way), and the directory itself is returned
18
18
  * as a mount point for `filesystem.allowWrite`: bind-mounted, it cannot be
19
19
  * renamed or removed (EBUSY), while bwrap can create the SDK's stubs in it.
20
20
  *
21
- * What becomes writable at the OS layer: NEW entries directly inside such a
22
- * directory (a new top-level file in the org root or ~/.claude), and the
23
- * directory's own mode bits. Everything that existed at session start stays
24
- * read-only — an existing entry is a mount point, so it cannot be rewritten,
25
- * unlinked, renamed or replaced. The Claude-Code-critical new names (settings,
26
- * hooks, skills, commands, agents, .mcp.json, .gitconfig, …) are the SDK's own
27
- * denies, now enforceable because their stubs can be created. The file tools
28
- * never relied on this layer: their permission rules (`Edit(//dir/**)`) and
29
- * the PolicyEngine deny lists keep the unexpanded directory.
21
+ * The role's cwd itself is the exception once the runtime holds its stubs
22
+ * (sandbox-stubs.ts, held before the restrictions are built): every stub path
23
+ * in it then exists, the SDK binds each one onto itself, and bwrap creates
24
+ * nothing there. The one path the runtime leaves to the SDK inside the cwd is
25
+ * `.git/config.lock`, and the SDK (0.3.226) skips a missing deny path whose
26
+ * nearest denied directory has no writable root below it ("already
27
+ * uncreatable"). So the cwd goes in as a plain deny when it has no other
28
+ * writable root and no other keep-writable path inside it and
29
+ * SandboxStubs.missing() reports nothing in it; any missing stub (a failed
30
+ * hold, a foreign empty stub that may vanish, no runtime stubs at all) falls
31
+ * back to the expansion. A directory ABOVE the cwd is still expanded: the
32
+ * SDK always makes the cwd a writable root, and with one below a denied
33
+ * directory it does create `.git/config.lock` inside it — that bwrap manages
34
+ * this under a read-only parent depends on the order the SDK emits its
35
+ * binds, which nothing here controls. ~/.claude is still expanded too:
36
+ * the SDK binds CLI state there that the runtime leaves to it on purpose
37
+ * (.credentials.json, .config.json, the CLI's own dirs), and bwrap creates
38
+ * those when they are missing (sandbox-stubs-sdk.test.ts).
39
+ *
40
+ * What becomes writable at the OS layer: NEW entries directly inside an
41
+ * expanded directory (a new top-level file in ~/.claude, in the org root when
42
+ * the cwd lies below it, or in the cwd while one of its stubs is missing),
43
+ * and the directory's own mode bits. A locked cwd allows neither. Everything
44
+ * that existed at session start stays read-only — an existing entry is a
45
+ * mount point, so it cannot be rewritten, unlinked, renamed or replaced. The
46
+ * Claude-Code-critical new names (settings, hooks, skills, commands, agents,
47
+ * .mcp.json, .gitconfig, …) are the SDK's own denies, now enforceable because
48
+ * their stubs can be created. The file tools never relied on this layer:
49
+ * their permission rules (`Edit(//dir/**)`) and the PolicyEngine deny lists
50
+ * keep the unexpanded directory.
30
51
  *
31
52
  * An empty regular file among those children is left out: it is one of
32
53
  * those stubs, which the SDK deletes when the sandbox that made it ends. The
@@ -47,14 +68,24 @@ export interface ExpandedDenyWrite {
47
68
  * bind mount when it already lies under a writable root. */
48
69
  mountPoints: string[];
49
70
  }
71
+ /** What lets the role's cwd itself stay a plain deny (see the header). */
72
+ export interface CwdLock {
73
+ /** The role's cwd. */
74
+ cwd: string;
75
+ /** The sandbox's `filesystem.allowWrite` before expansion. */
76
+ writableRoots: string[];
77
+ /** Stub paths the runtime could not put in place (SandboxStubs.missing). */
78
+ missingStubs: string[];
79
+ }
50
80
  /**
51
81
  * Replaces every deny-write path that equals or contains one of `keepWritable`
52
82
  * (the role's cwd, ~/.claude) with its existing children (less the SDK's
53
83
  * empty stubs), recursively. A path
54
84
  * that cannot be listed (missing, unreadable, not a directory) is kept as-is,
55
- * so the old — stricter — behaviour is the fallback.
85
+ * so the old — stricter — behaviour is the fallback. With `lock`, the cwd
86
+ * itself stays a plain deny when bwrap has nothing to create in it.
56
87
  */
57
- export declare function expandDenyWrite(paths: string[], keepWritable: string[], platform?: NodeJS.Platform): ExpandedDenyWrite;
88
+ export declare function expandDenyWrite(paths: string[], keepWritable: string[], platform?: NodeJS.Platform, lock?: CwdLock): ExpandedDenyWrite;
58
89
  /** `within()` over real paths, for picking the mount points that lie under a
59
90
  * root that is writable anyway (anything else was never writable and must not
60
91
  * become so). */
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox-deny-write.d.ts","sourceRoot":"","sources":["../../../src/orgrt/sandbox-deny-write.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AA2BH,MAAM,WAAW,iBAAiB;IAChC,+EAA+E;IAC/E,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB;iEAC6D;IAC7D,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EAAE,EACf,YAAY,EAAE,MAAM,EAAE,EACtB,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,iBAAiB,CAuBnB;AAED;;kBAEkB;AAClB,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAGhE"}
1
+ {"version":3,"file":"sandbox-deny-write.d.ts","sourceRoot":"","sources":["../../../src/orgrt/sandbox-deny-write.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AA2BH,MAAM,WAAW,iBAAiB;IAChC,+EAA+E;IAC/E,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB;iEAC6D;IAC7D,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,0EAA0E;AAC1E,MAAM,WAAW,OAAO;IACtB,sBAAsB;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,8DAA8D;IAC9D,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,4EAA4E;IAC5E,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAaD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EAAE,EACf,YAAY,EAAE,MAAM,EAAE,EACtB,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,IAAI,CAAC,EAAE,OAAO,GACb,iBAAiB,CAuBnB;AAED;;kBAEkB;AAClB,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAGhE"}
@@ -13,21 +13,42 @@
13
13
  * Read-only file system" and the role's Bash call fails. It only worked while
14
14
  * another sandboxed process happened to hold the stub.
15
15
  *
16
- * So such a directory is never passed as a deny. It is replaced by its
16
+ * So such a directory is not passed as a deny. It is replaced by its
17
17
  * existing children, each read-only (a child that itself contains the cwd or
18
18
  * ~/.claude is expanded the same way), and the directory itself is returned
19
19
  * as a mount point for `filesystem.allowWrite`: bind-mounted, it cannot be
20
20
  * renamed or removed (EBUSY), while bwrap can create the SDK's stubs in it.
21
21
  *
22
- * What becomes writable at the OS layer: NEW entries directly inside such a
23
- * directory (a new top-level file in the org root or ~/.claude), and the
24
- * directory's own mode bits. Everything that existed at session start stays
25
- * read-only — an existing entry is a mount point, so it cannot be rewritten,
26
- * unlinked, renamed or replaced. The Claude-Code-critical new names (settings,
27
- * hooks, skills, commands, agents, .mcp.json, .gitconfig, …) are the SDK's own
28
- * denies, now enforceable because their stubs can be created. The file tools
29
- * never relied on this layer: their permission rules (`Edit(//dir/**)`) and
30
- * the PolicyEngine deny lists keep the unexpanded directory.
22
+ * The role's cwd itself is the exception once the runtime holds its stubs
23
+ * (sandbox-stubs.ts, held before the restrictions are built): every stub path
24
+ * in it then exists, the SDK binds each one onto itself, and bwrap creates
25
+ * nothing there. The one path the runtime leaves to the SDK inside the cwd is
26
+ * `.git/config.lock`, and the SDK (0.3.226) skips a missing deny path whose
27
+ * nearest denied directory has no writable root below it ("already
28
+ * uncreatable"). So the cwd goes in as a plain deny when it has no other
29
+ * writable root and no other keep-writable path inside it and
30
+ * SandboxStubs.missing() reports nothing in it; any missing stub (a failed
31
+ * hold, a foreign empty stub that may vanish, no runtime stubs at all) falls
32
+ * back to the expansion. A directory ABOVE the cwd is still expanded: the
33
+ * SDK always makes the cwd a writable root, and with one below a denied
34
+ * directory it does create `.git/config.lock` inside it — that bwrap manages
35
+ * this under a read-only parent depends on the order the SDK emits its
36
+ * binds, which nothing here controls. ~/.claude is still expanded too:
37
+ * the SDK binds CLI state there that the runtime leaves to it on purpose
38
+ * (.credentials.json, .config.json, the CLI's own dirs), and bwrap creates
39
+ * those when they are missing (sandbox-stubs-sdk.test.ts).
40
+ *
41
+ * What becomes writable at the OS layer: NEW entries directly inside an
42
+ * expanded directory (a new top-level file in ~/.claude, in the org root when
43
+ * the cwd lies below it, or in the cwd while one of its stubs is missing),
44
+ * and the directory's own mode bits. A locked cwd allows neither. Everything
45
+ * that existed at session start stays read-only — an existing entry is a
46
+ * mount point, so it cannot be rewritten, unlinked, renamed or replaced. The
47
+ * Claude-Code-critical new names (settings, hooks, skills, commands, agents,
48
+ * .mcp.json, .gitconfig, …) are the SDK's own denies, now enforceable because
49
+ * their stubs can be created. The file tools never relied on this layer:
50
+ * their permission rules (`Edit(//dir/**)`) and the PolicyEngine deny lists
51
+ * keep the unexpanded directory.
31
52
  *
32
53
  * An empty regular file among those children is left out: it is one of
33
54
  * those stubs, which the SDK deletes when the sandbox that made it ends. The
@@ -63,21 +84,35 @@ const isStub = (p) => {
63
84
  return true; // already gone
64
85
  }
65
86
  };
87
+ /** Can `p`, which holds a keep-writable path, go in as a plain deny? Only the
88
+ * cwd itself, with no other keep-writable path and no other writable root
89
+ * inside it, and every stub in it in place. */
90
+ function lockable(p, keep, lock) {
91
+ const rp = real(p);
92
+ if (rp !== real(lock.cwd))
93
+ return false;
94
+ if (keep.some((k) => k !== rp && within(rp, k)))
95
+ return false;
96
+ if (lock.writableRoots.some((r) => real(r) !== rp && within(rp, real(r))))
97
+ return false;
98
+ return !lock.missingStubs.some((s) => within(rp, s) || within(p, s));
99
+ }
66
100
  /**
67
101
  * Replaces every deny-write path that equals or contains one of `keepWritable`
68
102
  * (the role's cwd, ~/.claude) with its existing children (less the SDK's
69
103
  * empty stubs), recursively. A path
70
104
  * that cannot be listed (missing, unreadable, not a directory) is kept as-is,
71
- * so the old — stricter — behaviour is the fallback.
105
+ * so the old — stricter — behaviour is the fallback. With `lock`, the cwd
106
+ * itself stays a plain deny when bwrap has nothing to create in it.
72
107
  */
73
- export function expandDenyWrite(paths, keepWritable, platform = process.platform) {
108
+ export function expandDenyWrite(paths, keepWritable, platform = process.platform, lock) {
74
109
  if (platform !== 'linux')
75
110
  return { denyWrite: paths, mountPoints: [] };
76
111
  const keep = keepWritable.map(real);
77
112
  const denyWrite = [];
78
113
  const mountPoints = [];
79
114
  const visit = (p) => {
80
- if (!keep.some((k) => within(real(p), k))) {
115
+ if (!keep.some((k) => within(real(p), k)) || (lock && lockable(p, keep, lock))) {
81
116
  denyWrite.push(p);
82
117
  return;
83
118
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox-deny-write.js","sourceRoot":"","sources":["../../../src/orgrt/sandbox-deny-write.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sandbox-deny-write.js","sourceRoot":"","sources":["../../../src/orgrt/sandbox-deny-write.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,154 @@
1
+ /**
2
+ * Mount-point stubs for the SDK sandbox's write-denies, held for the whole run.
3
+ *
4
+ * The Claude Code sandbox (bubblewrap) denies writes to a fixed set of
5
+ * "dangerous" paths: in the role's cwd, in every directory above it that is
6
+ * writable in the sandbox, in the Claude config dir and in $HOME. For one that
7
+ * does not exist it binds /dev/null onto it, so bwrap creates a 0-byte,
8
+ * mode-0444 file there as the mount point (an empty directory for a missing
9
+ * `.claude/`), and the SDK deletes it again when the command ends
10
+ * (sandbox-runtime cleanupBwrapMountPoints). The SDK only coordinates that
11
+ * within one process. Every role is its own CLI process sharing one cwd and
12
+ * one ~/.claude, so role B, wrapping a command while role A's stub exists,
13
+ * takes the stub for a real file and binds it onto itself (`--ro-bind P P`);
14
+ * A's command ends, A deletes it, and B's bwrap dies with "Can't find source
15
+ * path ~/.claude/local" (release runs since 2.16.x: 0–5 per run, each a
16
+ * sandbox-fault).
17
+ *
18
+ * So before a sandboxed role starts, the runtime creates every such path that
19
+ * is missing, the way bwrap would (an empty 0444 file; a plain `.claude/`
20
+ * directory to hold them), and keeps it until the run ends. The SDK then only
21
+ * ever finds an existing path, which it binds read-only and never tracks or
22
+ * deletes, so no process removes a mount source another one is about to use.
23
+ * At the end the runtime removes only what it created itself — still the same
24
+ * inode, still empty; a path that already existed is never touched. Every
25
+ * stub is also written to a per-machine ledger (defaultStubLedger()), so the
26
+ * ones a SIGKILL'd daemon or a reboot leaves behind (an empty read-only file
27
+ * at ~/.claude/commands would break the user's own Claude config for good)
28
+ * are reclaimed by the next runtime under the same rule (reclaim()).
29
+ *
30
+ * The lists are what claude-agent-sdk 0.3.226 binds (read off /proc/self/
31
+ * mountinfo inside its sandbox; sandbox-stubs-sdk.test.ts fails when an SDK
32
+ * upgrade adds one). Left out on purpose: `.git/config.lock` (held, it makes
33
+ * every `git config` write fail), the dirs the CLI writes into itself
34
+ * (projects, shell-snapshots, session-env, plugins, backups), which a file
35
+ * would break, and the state files it writes itself (.claude.json,
36
+ * .config.json, .credentials.json): a CLI starting on an empty .config.json
37
+ * exits with "configuration file … is corrupted". A path whose parent does not
38
+ * exist is skipped.
39
+ */
40
+ /** Relative to the role's cwd. Also what git-guard.ts hides from `git add`. */
41
+ export declare const CWD_STUBS: string[];
42
+ /** Relative to the Claude config dir ($CLAUDE_CONFIG_DIR, else ~/.claude). */
43
+ export declare const CONFIG_DIR_STUBS: string[];
44
+ /** Relative to where the global config file lives ($CLAUDE_CONFIG_DIR, else $HOME). */
45
+ export declare const GLOBAL_CONFIG_STUBS: string[];
46
+ /** Every stub path the sandbox binds for a role with this cwd and HOME, where
47
+ * `writableRoots` is the sandbox's `filesystem.allowWrite`. A `.claude`
48
+ * directory comes before the files in it. */
49
+ export declare function sandboxStubPaths(ctx: {
50
+ cwd: string;
51
+ home: string;
52
+ writableRoots: string[];
53
+ env?: NodeJS.ProcessEnv;
54
+ }): string[];
55
+ /** The per-machine crash ledger: `MONOMIND_ORGRT_STUBS_DIR`, else
56
+ * ~/.monomind/orgrt-sandbox-stubs (next to orgrt-broker and orgrt-operator). */
57
+ export declare function defaultStubLedger(env?: NodeJS.ProcessEnv): string;
58
+ export interface LedgerEntry {
59
+ path: string;
60
+ ino: number;
61
+ dev: number;
62
+ kind: 'file' | 'dir';
63
+ pid: number;
64
+ /** This pid's namespace and boot, so a later reclaim() can tell a dead pid
65
+ * in our own namespace apart from a live one we simply cannot see from a
66
+ * different namespace. Absent on an entry written before this field
67
+ * existed (see isLegacy). */
68
+ pidNamespace?: string;
69
+ bootId?: string;
70
+ runId: string;
71
+ createdAt: string;
72
+ }
73
+ /** Reads what identifies THIS process's pid namespace and boot, so a ledger
74
+ * entry can later tell a dead pid in our own namespace (safe to reclaim)
75
+ * apart from a live daemon's pid that we simply cannot see (the Claude SDK
76
+ * sandbox runs every role with `bwrap --unshare-pid`: `process.kill(pid, 0)`
77
+ * on a pid outside our namespace always throws ESRCH, alive or not). */
78
+ export interface IdentitySource {
79
+ /** `/proc/self/ns/pid`'s target, e.g. `pid:[4026531836]`; undefined if it
80
+ * cannot be read (older kernel, no /proc). */
81
+ pidNamespace(): string | undefined;
82
+ /** `/proc/sys/kernel/random/boot_id`, stable for one boot and never reused
83
+ * across a reboot — unlike a pid, which is. */
84
+ bootId(): string | undefined;
85
+ }
86
+ /** The stubs this process created, and which runs still need each one. */
87
+ export declare class SandboxStubs {
88
+ private readonly ledger?;
89
+ private readonly identity;
90
+ private readonly stubs;
91
+ private exitHook;
92
+ private reclaimed;
93
+ /** `ledger`: the crash-ledger file (default defaultStubLedger(), read when
94
+ * first needed); null keeps no ledger. `identity`: overridable in tests;
95
+ * defaults to reading this process's real pid namespace and boot id. */
96
+ constructor(ledger?: string | null | undefined, identity?: IdentitySource);
97
+ private get ledgerFile();
98
+ /** Creates each missing path — a `.claude` path as a directory, anything
99
+ * else as an empty 0444 file — and records `owner` on every path this
100
+ * process created. The first call reclaims a dead runtime's stubs first.
101
+ * Returns the paths created now. */
102
+ hold(owner: string, paths: string[]): string[];
103
+ /**
104
+ * The paths among `paths` that bwrap could still have to create as a mount
105
+ * point: neither a stub this process holds nor something that exists for
106
+ * good. An empty file or directory we did not make is what another
107
+ * process's bwrap stub looks like, and it vanishes when that sandbox ends,
108
+ * so it counts as missing. A path whose parent is not a directory is left
109
+ * out: the SDK skips it (a file ancestor, or no `.git` dir), and a missing
110
+ * `.claude` parent is reported itself.
111
+ */
112
+ missing(paths: string[]): string[];
113
+ /** Drops `owner`; removes the stubs no other run holds. Returns them. */
114
+ release(owner: string): string[];
115
+ releaseAll(): void;
116
+ /**
117
+ * Stubs a runtime that died without cleaning up (SIGKILL, reboot) left in
118
+ * the ledger. Each is removed under the same rule as our own — same inode,
119
+ * still empty — and forgotten either way: a changed path is no longer a
120
+ * stub. While another live runtime has stubs in the ledger, its roles may
121
+ * be binding the dead one's as existing files, so they are adopted instead:
122
+ * held by this process and removed when its first run ends. Entries of live
123
+ * runtimes are kept. Returns the paths removed.
124
+ */
125
+ reclaim(): string[];
126
+ private entry;
127
+ /** Is `e` an entry this process itself wrote? For a modern entry that also
128
+ * requires our current namespace and boot to match — a matching pid alone
129
+ * can be a different process after a pid wrap, or the same-numbered pid in
130
+ * an unrelated namespace. A legacy entry (no pidNamespace/bootId) falls
131
+ * back to the bare pid check it was written under — and so does every
132
+ * entry when OUR OWN identity could not be read (older kernel, no /proc):
133
+ * with no `ourNs`/`ourBootId` to compare against, a modern entry's real
134
+ * values would always look "different", which is not a safe basis for
135
+ * ownership either. */
136
+ private isOwn;
137
+ /** Is `e` safe to reclaim? A different boot always is (pids and namespace
138
+ * ids are meaningless across a reboot). Same boot but a different pid
139
+ * namespace never is — we cannot tell alive from dead across namespaces
140
+ * (`process.kill` always throws ESRCH there), so it is left alone rather
141
+ * than guessed at. Same boot and same namespace (or a legacy entry) falls
142
+ * back to the bare pid-alive check — and so does every entry when OUR OWN
143
+ * identity could not be read (older kernel, no /proc): without `ourNs`/
144
+ * `ourBootId` to compare against, a modern entry's real boot/namespace
145
+ * ids would always compare unequal, which would misjudge every live
146
+ * entry as a different boot and reclaim it. */
147
+ private isDead;
148
+ private updateLedger;
149
+ /** Files before the directories holding them; each only while unchanged. */
150
+ private remove;
151
+ }
152
+ /** One per process: every org run in it shares the cwd and ~/.claude stubs. */
153
+ export declare const sandboxStubs: SandboxStubs;
154
+ //# sourceMappingURL=sandbox-stubs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-stubs.d.ts","sourceRoot":"","sources":["../../../src/orgrt/sandbox-stubs.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAoCH,+EAA+E;AAC/E,eAAO,MAAM,SAAS,UAYrB,CAAC;AAEF,8EAA8E;AAC9E,eAAO,MAAM,gBAAgB,UAqB5B,CAAC;AAEF,uFAAuF;AACvF,eAAO,MAAM,mBAAmB,UAI/B,CAAC;AAKF;;8CAE8C;AAC9C,wBAAgB,gBAAgB,CAAC,GAAG,EAAE;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB,GAAG,MAAM,EAAE,CAoBX;AAWD;iFACiF;AACjF,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAK9E;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ;;;kCAG8B;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AA6CD;;;;yEAIyE;AACzE,MAAM,WAAW,cAAc;IAC7B;mDAC+C;IAC/C,YAAY,IAAI,MAAM,GAAG,SAAS,CAAC;IACnC;oDACgD;IAChD,MAAM,IAAI,MAAM,GAAG,SAAS,CAAC;CAC9B;AAiCD,0EAA0E;AAC1E,qBAAa,YAAY;IASrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAT3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA2B;IACjD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;IAE1B;;6EAEyE;IACzE,YACmB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,YAAA,EACtB,QAAQ,GAAE,cAAgC,EACzD;IAEJ,OAAO,KAAK,UAAU,GAErB;IAED;;;yCAGqC;IACrC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CA+B7C;IAED;;;;;;;;OAQG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAEjC;IAED,yEAAyE;IACzE,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAO/B;IAED,UAAU,IAAI,IAAI,CAEjB;IAED;;;;;;;;OAQG;IACH,OAAO,IAAI,MAAM,EAAE,CA4BlB;IAED,OAAO,CAAC,KAAK;IAeb;;;;;;;;4BAQwB;IACxB,OAAO,CAAC,KAAK;IAKb;;;;;;;;;oDASgD;IAChD,OAAO,CAAC,MAAM;IAad,OAAO,CAAC,YAAY;IAWpB,4EAA4E;IAC5E,OAAO,CAAC,MAAM;CAiBf;AAiDD,+EAA+E;AAC/E,eAAO,MAAM,YAAY,cAAqB,CAAC"}