github / github/copilot-cli

Permission scanner misclassifies git -L arguments and shell command text as directory paths

Open
#4,221 0 comments 0 reactions 0 assignees View on GitHub
area:permissions
Dominant language
Shell
Stars
11.2k
Forks
1.9k
Avg merge
14h 16m
Merged PRs (30d)
6

Description

### Describe the bug

Copilot CLI incorrectly flags parts of a shell command as directory access candidates when running `git log -L ...` with a search expression that starts with `/`.

In my case, the permission prompt displayed a synthetic "path" composed of:

- the `git log -L` search expression
- a source file path
- trailing shell text such as `&& printf`

This is not a real filesystem path. It appears the permission scanner is lexically collecting slash-prefixed command arguments and adjacent shell text, then presenting the result as an "Allow directory access" prompt.

### Affected version

GitHub Copilot CLI 1.0.73

### Steps to reproduce the behavior

Run a shell command shaped like this:

```bash
cd /REPO_ROOT && printf '%s\n' '---marker---' && git --no-pager log --oneline -L '/requestMatchers(HttpMethod).GET, "/some-route"/,+1:/project-module/src/main/java/com/example/security/SecurityConfig.java'
```

Then ask Copilot CLI to execute it under normal permissions.

### Actual behavior

Copilot CLI shows an **Allow directory access** prompt and presents a "path" that is actually a mixture of:

- the `-L` search expression
- the Java source path
- trailing shell tokens such as `&& printf`

Example of the misclassified candidate shape:

```text
/requestMatchers(HttpMethod).GET, "/some-route"/,+1:/project-module/src/main/java/com/example/security/SecurityConfig.java && printf
/**
/requestMatchers(HttpMethod).GET,
/\*\*
/,+1:/project-module/src/main/java/com/example/security/SecurityConfig.java
```

This is not a valid directory path and should not be treated as one.

### Expected behavior

Copilot CLI should not interpret `git -L` expressions or adjacent shell command text as filesystem paths.

If path scanning is needed, it should distinguish between:

- actual filesystem arguments
- regex/search expressions
- shell syntax and chained commands

### Impact

This causes unnecessary permission prompts on normal investigation commands and interrupts the workflow.

### Additional context

This looks related to other permission/path misclassification issues, especially cases where slash-prefixed strings or URL-like arguments are treated as local paths.

Contributor guide

Open the contributing guide

Research direction

Reproduce the permission prompt with the provided shell command, then trace the CLI permission scanner that collects path candidates from git -L arguments and chained shell text. Compare the candidate list with the actual filesystem argument and verify that the search expression and trailing shell tokens no longer produce directory-access prompts.

Written by the indexing model from the issue text.

Assessment

Tech stack
git, shell
Domain
cli, security
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.