Skip to content

Commit 4260ae4

Browse files
authored
Add Copilot CLI detection (#5)
1 parent ef53f54 commit 4260ae4

4 files changed

Lines changed: 16 additions & 0 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ $result = detectAgent();
5757
| AMP | `AMP_CURRENT_THREAD_ID` env var |
5858
| Opencode | `OPENCODE_CLIENT` or `OPENCODE` env var |
5959
| Claude | `CLAUDECODE` or `CLAUDE_CODE` env var |
60+
| Copilot | `COPILOT_CLI` env var |
6061
| Replit | `REPL_ID` env var |
6162
| Devin | `/opt/.devin` file exists |
6263

src/AgentDetector.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public static function detect(): AgentResult
2323
'amp' => ['AMP_CURRENT_THREAD_ID'],
2424
'claude' => ['CLAUDECODE', 'CLAUDE_CODE'],
2525
'replit' => ['REPL_ID'],
26+
'copilot' => ['COPILOT_CLI'],
2627
];
2728

2829
foreach ($agentsWithEnvVars as $agent => $envVars) {

src/KnownAgent.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,5 @@ enum KnownAgent: string
1515
case AugmentCli = 'augment-cli';
1616
case Opencode = 'opencode';
1717
case Amp = 'amp';
18+
case Copilot = 'copilot';
1819
}

tests/AgentDetectorTest.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
'AMP_CURRENT_THREAD_ID',
2121
'CLAUDECODE',
2222
'CLAUDE_CODE',
23+
'COPILOT_CLI',
2324
'REPL_ID',
2425
] as $var) {
2526
putenv($var);
@@ -41,6 +42,7 @@
4142
'AMP_CURRENT_THREAD_ID',
4243
'CLAUDECODE',
4344
'CLAUDE_CODE',
45+
'COPILOT_CLI',
4446
'REPL_ID',
4547
] as $var) {
4648
putenv($var);
@@ -168,6 +170,16 @@
168170
->and($result->knownAgent())->toBe(KnownAgent::Claude);
169171
});
170172

173+
it('detects copilot via COPILOT_CLI', function (): void {
174+
putenv('COPILOT_CLI=1');
175+
176+
$result = AgentDetector::detect();
177+
178+
expect($result->isAgent)->toBeTrue()
179+
->and($result->name)->toBe('copilot')
180+
->and($result->knownAgent())->toBe(KnownAgent::Copilot);
181+
});
182+
171183
it('detects replit via REPL_ID', function (): void {
172184
putenv('REPL_ID=some-repl-id');
173185

@@ -289,6 +301,7 @@
289301
'augment-cli' => ['AUGMENT_AGENT', 'true', KnownAgent::AugmentCli],
290302
'opencode' => ['OPENCODE_CLIENT', 'true', KnownAgent::Opencode],
291303
'amp' => ['AMP_CURRENT_THREAD_ID', 'thread-id', KnownAgent::Amp],
304+
'copilot' => ['COPILOT_CLI', '1', KnownAgent::Copilot],
292305
'claude' => ['CLAUDECODE', '1', KnownAgent::Claude],
293306
'replit' => ['REPL_ID', 'id', KnownAgent::Replit],
294307
]);

0 commit comments

Comments
 (0)