← all posts

copilot_here: December 2025 Updates - Native CLI, Stability & More

Gordon Beeming
Gordon Beeming
On this page8 sections ▾

I'd like to start off by saying thanks to @NenoLoje, @gparrello, and @mattrandles for logging issues for bugs they found or feature requests (that made it into this milestone).

December's main change to copilot_here is a .NET 10 Native AOT CLI that replaces most of the Bash and PowerShell orchestration logic.

Shell differences in quoting, arrays, and error handling had become difficult to maintain. The shell scripts now download and run the compiled binary. Follow-up fixes cover Windows paths, PowerShell 5.1, updates, and installation.

If you're new to copilot_here, check out my previous posts about running GitHub Copilot CLI in a secure, sandboxed Docker environment.

#What's New in December 2025

  1. Native AOT CLI - The core logic is now a compiled binary
  2. Enhanced Windows Support - No more "too many colons" errors
  3. Cross-Shell Installation - Configure installed shells together
  4. Session Info - Give your AI context about its environment
  5. Quality of Life Improvements - Fixes for updates, mounts, and more
  6. License Update - Moving to the Functional Source License
  7. Completed PBIs - Full list of changes and contributors

#1. Native AOT CLI

The biggest change this month is under the hood. We've migrated the core orchestration logic from Bash/PowerShell scripts to a .NET 10 Native AOT application.

#Why the switch?

The previous shell-script-only approach was becoming difficult to maintain. Differences in how shells handle arrays, quoting, and error handling led to "works on my machine" bugs. Moving that logic into the compiled application reduces the amount of behaviour implemented separately in each shell.

  • Stability: We can now write type-safe code with proper error handling and unit tests.
  • Speed: Native AOT compiles to machine code, giving us short startup times without needing a .NET runtime installed.
  • Consistency: The same binary logic runs on Linux, macOS, and Windows, reducing platform-specific bugs.

The shell scripts (copilot_here.sh and copilot_here.ps1) are now just thin wrappers that download and execute this binary.


#2. Enhanced Windows Support

We tested on fresh Windows installations with both PowerShell 5.1 and PowerShell Core. That exposed installation, path conversion, and terminal compatibility issues.

Even though the core application is now a native binary, the wrapper scripts that handle updates and initial execution are still PowerShell. We've hardened these scripts to handle dependency checks and path conversions correctly across all versions.

  • Path Conversion: Fixed the "too many colons" error by correctly converting Windows paths (e.g., C:\Projects) to Docker-compatible paths (e.g., /c/Projects).
  • Unicode Support: Replaced emojis with compatible characters on older terminals to prevent the ???? display issues.
  • Installation: The install script now handles missing directories and profiles gracefully.

#3. Cross-Shell Installation

Using copilot_here across multiple shells (Bash, Zsh, PowerShell) used to require manual setup for each. Now, you can set them all up at once:

Terminal
copilot_here --install-shells

This command detects which shells you have installed and automatically configures the necessary profiles and integrations for all of them.


#4. Session Info

When you're working with an AI agent, it often needs to know about its environment. We've added a new session-info command (and a COPILOT_HERE_SESSION_INFO environment variable) that provides a JSON summary of the current session:

Terminal
!session-info

This gives you (and the AI) details about:

  • Current working directory
  • Mounted paths (and their read/write status)
  • Active Docker image
  • Airlock network status

#5. Quality of Life Improvements

  • Mount Deduplication: We now handle duplicate mount requests, preferring read-only over read-write if specified multiple times (instead of the usual "first wins" logic) for better security.
  • Symlink Support: The updater now respects symlinked scripts (common in dotfiles setups) instead of overwriting them.
  • Update Loops: Fixed a bug where copilot_here would repeatedly prompt for the same update.
  • NPM Cache: Fixed permission issues with ~/.npm inside the container.

#6. License Update

We've updated the project license to the Functional Source License (FSL-1.1-MIT).

This is a "source available" license that converts to MIT after 2 years. It allows you to use, copy, modify, and redistribute the code for any purpose, except for creating a competing software-as-a-service product.

The release remains available for personal and commercial use subject to those terms.


#Completed PBIs

Here is the list of Product Backlog Items (PBIs) completed in the December 2025 milestone:

Gordon Beeming
Gordon Beeming

Father • Husband • Triathlete • SSW Solution Architect

Related posts