What happened
On Windows W1, a read-only Glob operation over an approved project directory fails before file enumeration when any nested entry is an NTFS junction. The failure occurs even when the requested pattern does not match or need to traverse that junction.
The observed error is:
Filesystem worker failed: ACL root contains a reparse point:
<project>\examples\terminal-story\node_modules\@sunrioa\rin-sdk
This makes Glob unavailable for ordinary project trees containing workspace-linked dependencies.
Expected behavior:
- Glob enumerates ordinary files under the approved root.
- A nested junction and its descendants are omitted rather than traversed.
- The junction target receives no permission merely because its alias is present under the Glob root.
- A Glob root that is itself a reparse point remains rejected.
简体中文
在 Windows W1 中,对已授权项目目录执行只读 Glob 操作时,只要目录树中的任何嵌套项是 NTFS junction,操作就会在开始枚举文件之前失败。即使请求的 pattern 不匹配、也不需要遍历该 junction,仍然会发生该错误。
实际观察到的错误为:
Filesystem worker failed: ACL root contains a reparse point:
<project>\examples\terminal-story\node_modules\@sunrioa\rin-sdk
这会导致包含 workspace 链接依赖的普通项目目录无法使用 Glob。
预期行为:
- Glob 能够枚举已授权根目录下的普通文件。
- 嵌套 junction 及其后代应被跳过,而不是被遍历。
- 不应仅仅因为 Glob 根目录中存在 junction 别名,就向它所指向的目标授予访问权限。
- 如果 Glob 的搜索根目录本身就是 reparse point,则仍然应该拒绝该请求。
How to reproduce
- On Windows, open a Maka Desktop task bound to a project with this layout:
<project>\
├── sdk\javascript\package.json
└── examples\terminal-story\
├── main.go
└── node_modules\@sunrioa\rin-sdk
-> <project>\sdk\javascript (NTFS Junction)
- Confirm that the nested dependency is a junction:
Attributes : Directory, ReparsePoint
LinkType : Junction
Target : <project>\sdk\javascript
- Invoke Glob with:
path: <project>\examples\terminal-story
pattern: main.go
- Observe that the filesystem worker reports
ACL root contains a reparse point instead of returning main.go.
The expected result is:
A Glob using this pattern should return no junction descendants:
node_modules/@sunrioa/rin-sdk/**/*
简体中文
- 在 Windows 上打开一个绑定了项目目录的 Maka Desktop 任务。项目目录结构如下:
<project>\
├── sdk\javascript\package.json
└── examples\terminal-story\
├── main.go
└── node_modules\@sunrioa\rin-sdk
-> <project>\sdk\javascript (NTFS Junction)
- 确认该嵌套依赖确实是 junction:
Attributes : Directory, ReparsePoint
LinkType : Junction
Target : <project>\sdk\javascript
- 使用以下参数调用 Glob:
path: <project>\examples\terminal-story
pattern: main.go
- 可以观察到,filesystem worker 没有返回
main.go,而是报告 ACL root contains a reparse point。
正确的预期结果应该是:
使用以下 pattern 搜索 junction 后代时,不应该返回任何文件:
node_modules/@sunrioa/rin-sdk/**/*
Environment
- Maka: 0.2.0 development build
- Latest affected source inspected:
c1ad24ca2 - OS: Windows 11 x64
- Surface: Desktop / Runtime filesystem worker
- Sandbox generation: Windows W1
- PowerShell used to inspect the junction: 7.6.3
- Filesystem entry type: NTFS Junction
Logs, screenshots, or additional context
The junction target is inside the same selected project. The failure is therefore not caused by requesting an unrelated path outside the workspace. Recursive ACL admission rejects the entire Glob root before non-following enumeration can begin.
A local candidate build produced the following manual regression results:
Glob(main.go) -> ["main.go"]
Glob(node_modules/@sunrioa/rin-sdk/**/*) -> []
This demonstrates that ordinary files remain enumerable while junction descendants are not traversed.
Related: #2142, #2961.
This issue was drafted with assistance from OpenAI Codex and reviewed by me.
简体中文
该 junction 的目标位于同一个已选择项目中。因此,这次失败不是因为请求访问无关的工作区外部目录,而是因为递归 ACL 准入逻辑在不跟随文件枚举开始前,就拒绝了整个 Glob 根目录。
本地候选修复版本的手工回归结果如下:
Glob(main.go) -> ["main.go"]
Glob(node_modules/@sunrioa/rin-sdk/**/*) -> []
这证明普通文件仍然能够被正常枚举,同时 Glob 不会遍历 junction 的后代。
相关内容:#2142、#2961。
本 Issue 由 OpenAI Codex 协助起草,并由我审查。
What happened
On Windows W1, a read-only Glob operation over an approved project directory fails before file enumeration when any nested entry is an NTFS junction. The failure occurs even when the requested pattern does not match or need to traverse that junction.
The observed error is:
This makes Glob unavailable for ordinary project trees containing workspace-linked dependencies.
Expected behavior:
简体中文
在 Windows W1 中,对已授权项目目录执行只读 Glob 操作时,只要目录树中的任何嵌套项是 NTFS junction,操作就会在开始枚举文件之前失败。即使请求的 pattern 不匹配、也不需要遍历该 junction,仍然会发生该错误。
实际观察到的错误为:
这会导致包含 workspace 链接依赖的普通项目目录无法使用 Glob。
预期行为:
How to reproduce
ACL root contains a reparse pointinstead of returningmain.go.The expected result is:
{"files":["main.go"]}A Glob using this pattern should return no junction descendants:
简体中文
main.go,而是报告ACL root contains a reparse point。正确的预期结果应该是:
{"files":["main.go"]}使用以下 pattern 搜索 junction 后代时,不应该返回任何文件:
Environment
c1ad24ca2Logs, screenshots, or additional context
The junction target is inside the same selected project. The failure is therefore not caused by requesting an unrelated path outside the workspace. Recursive ACL admission rejects the entire Glob root before non-following enumeration can begin.
A local candidate build produced the following manual regression results:
This demonstrates that ordinary files remain enumerable while junction descendants are not traversed.
Related: #2142, #2961.
This issue was drafted with assistance from OpenAI Codex and reviewed by me.
简体中文
该 junction 的目标位于同一个已选择项目中。因此,这次失败不是因为请求访问无关的工作区外部目录,而是因为递归 ACL 准入逻辑在不跟随文件枚举开始前,就拒绝了整个 Glob 根目录。
本地候选修复版本的手工回归结果如下:
这证明普通文件仍然能够被正常枚举,同时 Glob 不会遍历 junction 的后代。
相关内容:#2142、#2961。
本 Issue 由 OpenAI Codex 协助起草,并由我审查。