deepseek-ai/deepseek-harness · error
setTokenDefaultDaclGrant: the token carries no default DACL
Error message
setTokenDefaultDaclGrant: the token carries no default DACL to extend
What it means
Error "setTokenDefaultDaclGrant: the token carries no default DACL to extend" thrown in deepseek-ai/deepseek-harness.
Source
Thrown at packages/sandbox/sandbox-windows-acl/src/token.ts:123
* object's own DACL passes pass-2 while object creation itself stays gated by
* the parent container's DACL (files outside the granted trees remain
* uncreatable). Fails closed: any Win32 failure throws before the spawn.
* @param api - the binding table.
* @param token - the restricted token to adjust (requires TOKEN_ADJUST_DEFAULT).
* @param sidPtr - the restricting SID whose full-access ACE joins the default DACL.
*/
export function setTokenDefaultDaclGrant(api: Win32Bindings, token: NativePtr, sidPtr: NativePtr): void {
const neededSlot = allocUint32()
api.getTokenInformation(token, abi.TokenDefaultDacl, null, 0, neededSlot) // expected to fail with ERROR_INSUFFICIENT_BUFFER
const needed = decodeUint32(neededSlot)
if (needed === 0) throwLastError(api, 'GetTokenInformation', 'TokenDefaultDacl size query')
const buffer = Buffer.alloc(needed)
if (api.getTokenInformation(token, abi.TokenDefaultDacl, buffer, buffer.length, neededSlot) === 0) {
throwLastError(api, 'GetTokenInformation', 'TokenDefaultDacl')
}
const currentDacl = decodePtrAt(buffer, 0)
if (currentDacl === null) {
throw new Error('setTokenDefaultDaclGrant: the token carries no default DACL to extend')
}
const newDaclSlot = allocPtrSlot()
const result = api.setEntriesInAclW(
1,
buildExplicitAccess(sidPtr, abi.GRANT_ACCESS, abi.FILE_ALL_ACCESS),
currentDacl,
newDaclSlot,
)
if (result !== abi.ERROR_SUCCESS) throwWin32(api, 'SetEntriesInAclW', result, 'default DACL merge')
const newDacl = decodePtr(newDaclSlot)
if (newDacl === null) throwWin32(api, 'SetEntriesInAclW', result, 'null merged default DACL')
// TOKEN_DEFAULT_DACL { PACL DefaultDacl; } — the struct is exactly the
// pointer; SetTokenInformation copies the ACL before returning.
const info = Buffer.alloc(8)
info.writeBigUInt64LE(newDacl, 0)
if (api.setTokenInformation(token, abi.TokenDefaultDacl, info, info.length) === 0) {
const win32Code = api.getLastError()
api.localFree(newDacl)View on GitHub (pinned to b150a551b8)
Solutions
- Set a default DACL on the token before extending it, or skip the default-DACL grant for tokens that carry none.
When it happens
Trigger: Thrown at packages/sandbox/sandbox-windows-acl/src/token.ts:123 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of deepseek-ai/deepseek-harness@b150a551b8 (2026-08-24).
Data as JSON: /api/errors/27896e2e955c48e7.
Report an issue: GitHub.