10월 7일, GitHub Changelog에 한 줄짜리 개선이 올라왔습니다. Copilot CLI 1.0.94-0부터 /model 명령으로 실행 중인 Ollama의 지원 모델을 발견하고 고를 수 있다는 내용입니다.

작아 보이지만 의미가 있습니다. 클라우드와 로컬을 같은 터미널 워크플로에서 고르는 시대가 열린 것입니다. 다만 공식 문서가 분명히 선을 긋는 지점이 있습니다. 로컬 모델을 고른다고 오프라인이 켜지지 않습니다. 이 글은 되는 것과 안 되는 것을 나눠서 읽습니다.

뭐가 바뀌나: /model에서 로컬이 보인다

바뀐 흐름은 이렇습니다.

예전: /model → 클라우드 모델 + 직접 설정한 모델만
지금: /model → 클라우드 + 설정 모델 + 실행 중인 Ollama에서 발견한 모델

 1. 발견된 모델 고르기
 2. 제공자·엔드포인트 확인
 3. "Add and use for this session" 또는 "Add without switching" 확정
 4. CLI 재시작 없이 현재 세션에서 바로 사용

발견이 곧 등록이 아니라는 점이 포인트입니다. 고르고, 어디 모델인지 확인하고, 이번 세션에 쓸지까지 정해야 합니다. 연결 실패도 피커 안에 이유와 함께 뜹니다. 뭐가 막혔는지 터미널을 떠나지 않고 알 수 있습니다.

전제 조건 두 개는 외워두세요.

[ ] Ollama와 모델이 이미 설치돼 있어야 한다 (이 흐름은 설치해 주지 않는다)
[ ] 모델이 도구 호출과 스트리밍을 지원해야 한다

런타임을 깔아주지도, 모델을 받아주지도 않습니다. 이미 돌고 있는 Ollama에서 쓸 만한 것을 골라주는 기능입니다.

오해 바로잡기: 로컬 선택 ≠ 오프라인

공식 문장이 단호합니다.

로컬 모델을 고른다 → 오프라인 모드가 켜지지 않는다
로컬 모델을 고른다 → GitHub 텔레메트리가 꺼지지 않는다
오프라인은 별도 선택: COPILOT_OFFLINE=true

심지어 오프라인 모드에서도 제공자가 원격이면 프롬프트와 코드 맥락이 네트워크로 나갑니다. COPILOT_PROVIDER_BASE_URL이 원격 주소를 가리키면 오프라인 선언과 무관하게 전송됩니다. 완전 격리는 "제공자도 로컬"일 때만 성립합니다. 보안 4층 글에서 말한 것처럼, 경계는 선언이 아니라 실제 전송 경로로 판단해야 합니다.

표로 정리하면 이렇습니다.

선택 텔레메트리 프롬프트 전송
클라우드 모델 켜짐 GitHub 경유 클라우드
로컬 모델 (기본) 켜짐 로컬 Ollama (텔레메트리는 별도)
로컬 + COPILOT_OFFLINE=true 꺼짐 로컬에만 (제공자가 로컬일 때)
원격 BYOK + 오프라인 선언 꺼짐 원격 제공자로 전송 (주의)

"로컬이라 안전하겠지"가 아니라 "어디로 뭐가 나가는지"를 보는 습관이 필요합니다.

배경: BYOK에서 자동 발견까지

이번 업데이트는 갑자기 나온 게 아닙니다. 4월에 Copilot CLI는 BYOK와 로컬 모델 지원을 열었습니다. 환경 변수로 제공자를 직접 꽂는 방식입니다.

# 로컬 Ollama를 직접 꽂던 기존 방식 (BYOK)
export COPILOT_PROVIDER_BASE_URL=http://localhost:11434
export COPILOT_PROVIDER_TYPE=openai
export COPILOT_MODEL=llama3.2

제공자 종류는 openai·azure·anthropic 세 가지이고, openai 종류가 Ollama·vLLM·Foundry Local 같은 OpenAI 호환 엔드포인트를 받습니다. 로컬 Ollama는 API 키 없이도 됩니다.

10월 업데이트는 이 수동 설정을 피커 안으로 끌어들인 것입니다. 설정 파일을 열지 않고 /model에서 발견→확인→추가가 됩니다. Copilot 앱의 Settings > Model providers 경험과 같은 방향입니다. 목표는 하나입니다. 작업에 맞는 모델을 고르는 일을 워크플로 안에 두는 것.

다음 수순: Auto 오케스트레이션

Changelog 끝자락에 다음 예고가 있습니다. 월말쯤 Copilot이 로컬과 클라우드 중 어디서 추론할지 스스로 정하는 지능형 라우팅이 온다는 것입니다. Microsoft Command Line 블로그의 설명을 겹치면 그림이 그려집니다.

지금: 개발자가 직접 고른다 (/model에서 로컬 선택)
다음: Auto가 고른다 (HydraFusion 오케스트레이터가 성능·비용·지연으로 판단)
  ├─ 기기 내 처리가 맞으면 → 로컬 (예: MAI Code 1.1 Flash)
  └─ 규모가 필요하면 → 클라우드

Surface Laptop Ultra 같은 RTX Spark 기기에서는
로컬 코딩 + 하드웨어 가속이 엣지 경험을 맡는다

이건 모델 라우팅 글의 자동 버전입니다. 사람이 고르는 피커가 먼저 오고, 기계가 고르는 오케스트레이터가 뒤에 옵니다. 순서를 기억해 두세요. 자동화에 맡기기 전에 직접 골라본 경험이 있어야, Auto가 이상하게 굴 때 알아챕니다.

참고로 같은 주 릴리스(v1.0.94-3)에는 Claude Haiku 5.5가 모델 선택에 추가됐습니다. 로컬 발견과 저비용 클라우드 모델이 같은 피커에 들어온 셈입니다. Haiku 5.5 글의 가격표를 옆에 두고 고르면 됩니다.

직접 해보기: 환경 변수와 비교 실험

설정은 공식 문서 흐름 그대로입니다.

# 1. Ollama가 돌고 있는지 확인
ollama list

# 2. CLI 안에서 발견 (CLI 1.0.94-0 이상)
/model
# → 발견된 로컬 모델 선택 → 제공자·엔드포인트 확인 → 세션에 추가

# 3. 오프라인이 필요하면 별도로 선언
export COPILOT_OFFLINE=true

CodeBridge Mini Lab: 같은 수정, 두 모델

① 같은 코드 수정 작업 1개를 정한다 (예: 함수 1개 리팩터링 + 테스트 통과)
② 클라우드로 1회 → 기록: 정확도(테스트 통과 여부)·지연시간
③ 로컬(Ollama)로 1회 → 기록: 정확도·지연시간
④ 비교표 1줄:
   [ ] 정확도가 같으면 → 로컬을 기본으로 (데이터 통제 + 비용)
   [ ] 로컬이 틀리면 → 어디서 틀렸는지 분류 (도구 호출? 긴 맥락? 추론?)
   [ ] 애매하면 → Auto나 상위 모델 승격 규칙을 적는다
⑤ 오프라인 점검:
   [ ] COPILOT_OFFLINE=true 없이 로컬을 쓴 흔적 확인
   [ ] 제공자 URL이 로컬인지 원격인지 확인 (전송 경로!)

바이브코딩 Copilot 글의 Agent·Plan 흐름에 모델 비교 한 줄을 붙이는 것입니다.

결론: 고르는 일이 워크플로가 됐다

한 줄로 정리합니다.

로컬을 고르기 쉽게 된 게 아니라, 클라우드와 로컬을 같은 자리에서 고르게 된 것이다.

이번 업데이트의 진짜 변화는 Ollama 지원 자체가 아닙니다. 모델 선택이 설정 파일 밖으로 나와 터미널 세션 안으로 들어온 것입니다. 그리고 그 옆에 주의문이 붙었습니다. 로컬 선택은 오프라인이 아니다. 전송 경로는 따로 확인해라.

오늘 할 일은 작습니다. 같은 수정을 클라우드와 로컬로 한 번씩 돌리세요. 정확도와 지연을 적으세요. 그 표가 다음에 Auto에게 맡길지, 직접 고를지를 정해줍니다.

함께 읽으면 좋은 글

참고 자료

이 주제를 직접 따라가며 배우고 싶다면

Agent와 Plan 모드를 실제 프로젝트에 붙이고 모델 선택까지 흐름으로 연결하는 연습이 필요하다면, Java·Spring 프로젝트에 Copilot을 적용하는 과정이 이 글의 비교 실험과 바로 이어집니다.