github / github/copilot-cli

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

Offen
#3,664 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
area:configuration area:platform-windows area:plugins
Vorherrschende Sprache
Shell
Sterne
11.2k
Forks
1.9k
Ø Merge
14 Std. 16 Min.
Gemergte PRs (30 T.)
6

Beschreibung

## 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

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.