github / github/copilot-cli

preToolUse hook cwd field does not expand ~ (tilde), blocking all tool calls

Đang mở
#3,664 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
area:configuration area:platform-windows area:plugins
Ngôn ngữ chính
Shell
Star
11.2k
Fork
1.9k
Merge trung bình
14 giờ 16 phút
Pull request đã merge (30 ngày)
6

Mô tả

## Describe the bug

When a `preToolUse` hook entry in `.github/hooks/*.json` uses `"cwd": "~"`, the CLI does not expand the tilde to the user's home directory. The hook script path is resolved against the literal string `~` instead of (e.g.) `C:\Users\`, causing the script to not be found. The CLI then treats this as a hook failure and **blocks all subsequent tool calls** for the session.

## Affected version

Copilot CLI 1.0.59 (Windows)

## Steps to reproduce

1. Create `.github/hooks/skill-enforcement.json`:
```json
{
"version": 1,
"hooks": {
"preToolUse": [
{
"type": "command",
"powershell": ".github/hooks/scripts/skill-gate.ps1",
"cwd": "~",
"timeoutSec": 5
}
]
}
}
```

2. Create `~/.github/hooks/scripts/skill-gate.ps1`:
```powershell
function Write-Allow { Write-Output '{"decision":"allow"}' }
Write-Allow; exit 0
```

3. Start a Copilot CLI session. All tool calls will fail/be blocked.

4. Change `"cwd": "~"` to `"cwd": "C:\\Users\\"` (absolute path) and restart. Tool calls work normally.

## Isolation testing

| Configuration | Result |
|---|---|
| Inline `Write-Output` (no script, no cwd) | ✅ Works |
| Absolute script path, no cwd | ✅ Works |
| Relative script path + absolute `cwd` (`C:\Users\`) | ✅ Works |
| Relative script path + `cwd: "~"` | ❌ **All tool calls blocked** |

The script itself is a trivial 2-line allow-all — the content is not the issue.

## Expected behavior

`"cwd": "~"` should expand to the user's home directory (e.g., `C:\Users\` on Windows, `/home/` on Linux), consistent with standard shell tilde expansion.

Alternatively, if tilde expansion is not supported, the CLI should:
1. Document this limitation
2. Fail with a clear error message rather than "hook error"

## Additional notes

- OS: Windows 11, PowerShell 7+
- CLI installed via WinGet

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.