diff --git a/ui/src/components/NewAgentDialog.test.tsx b/ui/src/components/NewAgentDialog.test.tsx
index 855294dec2..71b4cd1bb3 100644
--- a/ui/src/components/NewAgentDialog.test.tsx
+++ b/ui/src/components/NewAgentDialog.test.tsx
@@ -113,9 +113,21 @@ it("offers native Codex, Claude ACPX, and OpenCode runners", async () => {
expect(options).toContain("Codex (app server)");
expect(options).toContain("Claude (ACPX)");
expect(options).toContain("OpenCode");
+ expect(options).toContain("GitHub Copilot");
expect(options.join(" ")).not.toContain("ACPX Codex");
});
+it("opens saved-token Copilot setup through the ordinary New Agent picker", async () => {
+ await name();
+ await act(async () => (document.querySelector('input[value="paperclip_runner"]') as HTMLInputElement).click());
+ const select = document.querySelector("select") as HTMLSelectElement;
+ await act(async () => { select.value = "copilot"; select.dispatchEvent(new Event("change", { bubbles: true })); });
+ await click("Configure agent");
+ const query = new URL(state.navigate.mock.calls[0][0], "http://local").searchParams;
+ expect(query.get("adapterType")).toBe("paperclip_runner");
+ expect(query.get("runnerProvider")).toBe("copilot");
+});
+
it.each([false, undefined])(
"hides the runner unless explicitly enabled (%s)",
async (enableNativeRunner) => {
diff --git a/ui/src/components/new-agent/AgentBasicsDialog.tsx b/ui/src/components/new-agent/AgentBasicsDialog.tsx
index e2039cd7bd..8879295845 100644
--- a/ui/src/components/new-agent/AgentBasicsDialog.tsx
+++ b/ui/src/components/new-agent/AgentBasicsDialog.tsx
@@ -230,6 +230,7 @@ export function AgentBasicsDialog({
+