From dd163c227f403844f9037e111a799ec487690d02 Mon Sep 17 00:00:00 2001 From: Copilot Date: Tue, 7 Apr 2026 17:53:08 +0300 Subject: [PATCH 1/3] feat(cli): add deprecation warnings for tunnel, rc, and REPL commands MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds visible deprecation warnings to: - Interactive REPL shell (squad with no args) - squad start (and --tunnel flag) - squad rc / remote-control - squad rc-tunnel Phase 1: warnings only — no behavior changes. Commands still work but now emit a yellow deprecation notice pointing users to the GitHub Copilot CLI as the replacement. Help text updated to show [DEPRECATED] tags on affected commands. Closes #899 Related: #665 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- packages/squad-cli/src/cli-entry.ts | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/packages/squad-cli/src/cli-entry.ts b/packages/squad-cli/src/cli-entry.ts index 421baca46..23c2bbc2e 100644 --- a/packages/squad-cli/src/cli-entry.ts +++ b/packages/squad-cli/src/cli-entry.ts @@ -150,7 +150,7 @@ async function main(): Promise { console.log(`\n${BOLD}squad${RESET} v${VERSION} — Add an AI agent team to any project\n`); console.log(`Usage: squad [command] [options]\n`); console.log(`Commands:`); - console.log(` ${BOLD}(default)${RESET} Launch interactive shell (no args)`); + console.log(` ${BOLD}(default)${RESET} Launch interactive shell (no args) ${YELLOW}[DEPRECATED]${RESET}`); console.log(` Flags: --global (init in personal squad directory)`); console.log(` ${BOLD}init${RESET} Initialize Squad (markdown-only, default)`); console.log(` Flags: --sdk (SDK builder syntax)`); @@ -209,12 +209,10 @@ async function main(): Promise { console.log(` Usage: import [--force]`); console.log(` ${BOLD}scrub-emails${RESET} Remove email addresses from Squad state files`); console.log(` Usage: scrub-emails [directory] (default: .ai-team/)`); - console.log(` ${BOLD}start${RESET} Start Copilot with remote access from phone/browser`); + console.log(` ${BOLD}start${RESET} Start Copilot with remote access from phone/browser ${YELLOW}[DEPRECATED]${RESET}`); console.log(` Usage: start [--tunnel] [--port ] [--command ]`); console.log(` [copilot flags...]`); - console.log(` Examples: start --tunnel --yolo`); - console.log(` start --tunnel --model claude-sonnet-4`); - console.log(` start --tunnel --command "gh copilot"`); + console.log(` ${DIM}⚠ Deprecated: --tunnel and remote access will be removed in a future release.${RESET}`); console.log(` ${BOLD}nap${RESET} Context hygiene (compress, prune, archive .squad/ state)`); console.log(` Usage: nap [--deep] [--dry-run]`); console.log(` Flags: --deep (thorough cleanup), --dry-run (preview only)`); @@ -239,12 +237,12 @@ async function main(): Promise { console.log(` Usage: personal init | list | add `); console.log(` --role | remove `); console.log(` ${BOLD}cast${RESET} Show current session cast (project + personal agents)`); - console.log(` ${BOLD}rc${RESET} Start Remote Control bridge (phone/browser → Copilot)`); + console.log(` ${BOLD}rc${RESET} Start Remote Control bridge (phone/browser → Copilot) ${YELLOW}[DEPRECATED]${RESET}`); console.log(` Usage: rc [--tunnel] [--port ] [--path ]`); console.log(` ${BOLD}copilot-bridge${RESET} Check Copilot ACP stdio compatibility`); console.log(` ${BOLD}init-remote${RESET} Link project to remote team root (shorthand)`); console.log(` Usage: init-remote `); - console.log(` ${BOLD}rc-tunnel${RESET} Check devtunnel CLI availability`); + console.log(` ${BOLD}rc-tunnel${RESET} Check devtunnel CLI availability ${YELLOW}[DEPRECATED]${RESET}`); console.log(` ${BOLD}discover${RESET} List known squads and their capabilities`); console.log(` ${BOLD}delegate${RESET} Create work in another squad`); console.log(` Usage: delegate `); @@ -273,6 +271,8 @@ async function main(): Promise { // No args → launch interactive shell; whitespace-only arg → show help if (rawCmd === undefined) { + console.log(`\n${YELLOW}⚠ DEPRECATED:${RESET} The interactive REPL shell is deprecated and will be removed in a future release.`); + console.log(` Use the GitHub Copilot CLI instead: ${BOLD}gh copilot${RESET} (squad.agent.md is picked up automatically)\n`); // Fire-and-forget update check — non-blocking, never delays shell startup import('./cli/self-update.js').then(m => m.notifyIfUpdateAvailable(VERSION)).catch(() => {}); const { runShell } = await lazyRunShell(); @@ -708,8 +708,13 @@ async function main(): Promise { } if (cmd === 'start') { + console.log(`\n${YELLOW}⚠ DEPRECATED:${RESET} "squad start" is deprecated and will be removed in a future release.`); + console.log(` Use the GitHub Copilot CLI directly: ${BOLD}copilot${RESET} or ${BOLD}gh copilot${RESET}\n`); const { runStart } = await import('./cli/commands/start.js'); const hasTunnel = args.includes('--tunnel'); + if (hasTunnel) { + console.log(`${YELLOW}⚠ DEPRECATED:${RESET} --tunnel is deprecated and will be removed in a future release.\n`); + } const portIdx = args.indexOf('--port'); const port = (portIdx !== -1 && args[portIdx + 1]) ? parseInt(args[portIdx + 1]!, 10) : 0; // Collect all remaining args to pass through to copilot @@ -789,6 +794,8 @@ async function main(): Promise { } if (cmd === 'rc' || cmd === 'remote-control') { + console.log(`\n${YELLOW}⚠ DEPRECATED:${RESET} "squad rc" is deprecated and will be removed in a future release.`); + console.log(` Use the GitHub Copilot CLI directly: ${BOLD}copilot${RESET} or ${BOLD}gh copilot${RESET}\n`); const { runRC } = await import('./cli/commands/rc.js'); const hasTunnel = args.includes('--tunnel'); const portIdx = args.indexOf('--port'); @@ -823,6 +830,7 @@ async function main(): Promise { } if (cmd === 'rc-tunnel') { + console.log(`\n${YELLOW}⚠ DEPRECATED:${RESET} "squad rc-tunnel" is deprecated and will be removed in a future release.\n`); const { isDevtunnelAvailable } = await import('./cli/commands/rc-tunnel.js'); if (isDevtunnelAvailable()) { console.log(`${GREEN}✓${RESET} devtunnel CLI is available`); From 34f150af86e68793bdb8d6f3447b8b063524637c Mon Sep 17 00:00:00 2001 From: Copilot Date: Tue, 7 Apr 2026 18:11:45 +0300 Subject: [PATCH 2/3] chore: add changeset for tunnel/rc/REPL deprecation warnings Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .changeset/deprecate-tunnel-rc-repl.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/deprecate-tunnel-rc-repl.md diff --git a/.changeset/deprecate-tunnel-rc-repl.md b/.changeset/deprecate-tunnel-rc-repl.md new file mode 100644 index 000000000..93b3e3614 --- /dev/null +++ b/.changeset/deprecate-tunnel-rc-repl.md @@ -0,0 +1,5 @@ +--- +"@bradygaster/squad-cli": patch +--- + +Add deprecation warnings for tunnel, rc, and REPL commands. The interactive shell (no-args), `squad start`, `squad start --tunnel`, `squad rc`, and `squad rc-tunnel` now emit yellow deprecation notices pointing users to the GitHub Copilot CLI. No behavior changes — all commands still work. From c4815919fad3ea3025fe049f40ab0043a8d866cb Mon Sep 17 00:00:00 2001 From: Copilot Date: Wed, 8 Apr 2026 11:54:30 +0300 Subject: [PATCH 3/3] fix: shorten deprecation hint to fit 80-char UX gate Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- packages/squad-cli/src/cli-entry.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/squad-cli/src/cli-entry.ts b/packages/squad-cli/src/cli-entry.ts index 23c2bbc2e..c20d92c00 100644 --- a/packages/squad-cli/src/cli-entry.ts +++ b/packages/squad-cli/src/cli-entry.ts @@ -212,7 +212,7 @@ async function main(): Promise { console.log(` ${BOLD}start${RESET} Start Copilot with remote access from phone/browser ${YELLOW}[DEPRECATED]${RESET}`); console.log(` Usage: start [--tunnel] [--port ] [--command ]`); console.log(` [copilot flags...]`); - console.log(` ${DIM}⚠ Deprecated: --tunnel and remote access will be removed in a future release.${RESET}`); + console.log(` ${DIM}⚠ Deprecated: will be removed in a future release.${RESET}`); console.log(` ${BOLD}nap${RESET} Context hygiene (compress, prune, archive .squad/ state)`); console.log(` Usage: nap [--deep] [--dry-run]`); console.log(` Flags: --deep (thorough cleanup), --dry-run (preview only)`);