{"record":{"id":"c7e563afd9e7c44e","repo":"deepseek-ai/deepseek-harness","slug":"aclsandbox-workspace-write-requires-a-write-sid","errorCode":null,"errorMessage":"AclSandbox workspace-write requires a write SID — derive it from the workspace via workspaceWriteSid()","messagePattern":"AclSandbox workspace-write requires a write SID — derive it from the workspace via workspaceWriteSid\\(\\)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/sandbox/sandbox-windows-acl/src/index.ts","lineNumber":194,"sourceCode":"  /** The well-known/logon SID allocations init() makes; freed by dispose() alongside the write SIDs. */\n  private sidAllocations: NativePtr[] = []\n  private grantedPaths: Array<{ path: string; sidPtr: NativePtr }> = []\n\n  constructor(options: AclSandboxOptions) {\n    this.mode = options.mode\n    this.manageDacls = options.manageDacls ?? true\n    this.writableDirs = options.writableDirs.map((directory) => {\n      const absolute = resolve(directory)\n      if (!existsSync(absolute) || !statSync(absolute).isDirectory()) {\n        throw new Error(`AclSandbox writable dir does not exist or is not a directory: ${absolute}`)\n      }\n      return absolute\n    })\n    this.tempDirOption = options.tempDir\n    this.writeSid = options.writeSid\n    this.tempWriteSid = options.tempWriteSid\n    if (this.mode === 'workspace-write' && this.writeSid === undefined) {\n      throw new Error('AclSandbox workspace-write requires a write SID — derive it from the workspace via workspaceWriteSid()')\n    }\n    if (this.mode === 'workspace-write' && this.tempDirOption === undefined) {\n      throw new Error('AclSandbox workspace-write requires an explicit private temp directory or null')\n    }\n    if (this.mode === 'read-only' && this.tempDirOption !== undefined && this.tempDirOption !== null) {\n      throw new Error('AclSandbox read-only does not accept a temp directory')\n    }\n    if (this.mode === 'read-only' && (this.writeSid !== undefined || this.tempWriteSid !== undefined)) {\n      throw new Error('AclSandbox read-only does not accept write SIDs')\n    }\n    if (this.mode === 'workspace-write' && this.tempDirOption !== null && this.tempWriteSid === undefined) {\n      throw new Error('AclSandbox workspace-write with temp requires a temp write SID — derive it via tempWriteSid()')\n    }\n    if (this.tempDirOption === null && this.tempWriteSid !== undefined) {\n      throw new Error('AclSandbox temp write SID requires a temp directory')\n    }\n    if (this.writeSid !== undefined && this.tempWriteSid === this.writeSid) {\n      throw new Error('AclSandbox workspace and temp write SIDs must be distinct')","sourceCodeStart":176,"sourceCodeEnd":212,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/sandbox/sandbox-windows-acl/src/index.ts#L176-L212","documentation":"Error \"AclSandbox workspace-write requires a write SID — derive it from the workspace via workspaceWriteSid()\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/sandbox/sandbox-windows-acl/src/index.ts:194 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Derive the workspace write SID with workspaceWriteSid() and pass it in the sandbox options."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"b150a551b8d465e31e418e1b2eaf5e79bbb7d28e","analyzedAt":"2026-08-24T18:12:29.105Z","schemaVersion":2},"datasetVersion":"2026-08-24T22:17:12.610Z"}