github / github/copilot-cli

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

Abierto
#3,664 0 comentarios 0 reacciones 0 asignados Ver en GitHub
area:configuration area:platform-windows area:plugins
Lenguaje dominante
Shell
Estrellas
11.2k
Forks
1.9k
Merge medio
14 h 16 min
PR fusionados (30 d)
6

Descripción

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

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.