pi auth login <provider>와 pi auth logout <provider>를 사용할 수 있으며, API 키 로그인 및 브라우저 없이 로그인하는 옵션을 지원합니다. 자격 증명 명령을 참고하세요.cacheWarming을 참고하세요.models.classify()를 통해 Microsoft-Decision-1을 호출하여 타입이 지정된 결정과 확률을 얻을 수 있습니다. 분류기 모델 사용을 참고하세요.pi update --extensions는 각 패키지의 npm 버전 또는 git 커밋 변경 사항을 보고하며, 변경 없음, 건너뜀, 경고 발생 업데이트를 구분합니다. Pi 또는 패키지 업데이트를 참고하세요.GrepOperations.readFile 콜백이 더 이상 컨텍스트 라인에 대해 호출되지 않습니다. 이 필드는 선택 사항이며 지원 중단(deprecated) 상태로 계속 허용되므로 기존 통합 코드는 그대로 컴파일됩니다. grep 도구는 이제 컨텍스트 라인을 ripgrep에서 가져오며, 일치한 파일을 직접 읽지 않습니다. 원격 시스템을 검색하려면 grep의 execute()를 재정의하세요. 원격 실행(#9276)을 참고하세요."tools": []를 전송하지 않으며 해당 필드는 생략됩니다. 이로 인해 vLLM 0.20 이상과 LiteLLM을 거친 경우에도 발생하던 400 오류(tools must not be an empty array)가 수정됩니다. 대화 기록에 도구 호출이 포함된 후 tools를 요구하는 프록시(예: Anthropic 앞단의 이전 버전 LiteLLM)를 사용하는 경우, 해당 모델의 models.json에 compat.requiresToolsWithToolHistory: true를 설정하세요(#11843).pi update는 이제 업데이트된 각 패키지를 npm 버전 또는 git 커밋 변경 사항과 함께 나열합니다(예: npm:foo 1.2.0 -> 1.3.0). 변경 사항이 없으면 Packages are already up to date를 출력합니다. 변경 사항은 없지만 업데이트 중 경고가 출력된 경우(예: npm이 오래된 레지스트리 메타데이터를 해석한 후 이전 버전을 그대로 둔 경우)에는 No packages were updated, see the warnings above를 출력합니다. 오프라인 모드에서는 Skipped package updates (offline mode)를 출력합니다. PackageManager.update()는 변경된 각 패키지를 해당 줄을 message에 담은 새로운 result 진행 이벤트로 보고합니다(#11707, #11711).api.anthropic.com의 anthropic 제공자에서는 기본적으로 활성화되어 있습니다. thread 필드를 전달하는 게이트웨이에서 사용하려면 models.json에서 compat.supportsMessageThreads를 설정하고, 비활성화하려면 같은 값을 끄세요. 캐시 워밍은 세션의 스레드에 영향을 주지 않습니다(#11545).pi.registerMarkdownTransformer()는 트랜스포머가 실행될 Markdown 영역을 선택하는 선택적 { messageTypes } 옵션을 받습니다. 사용자, 어시스턴트, 사고(thinking) Markdown 외에도, 트랜스포머는 이제 custom(사용자 정의 메시지 및 스킬 블록), summary(브랜치 및 컴팩션 요약), changelog(What's New, /changelog, Extension Updates 알림, Update Available 안내)을 선택할 수 있습니다. 옵션을 지정하지 않으면 트랜스포머는 이전과 같이 사용자, 어시스턴트, 사고 Markdown에서 실행됩니다. 내장 Mermaid 렌더러는 이제 확장된 브랜치 및 컴팩션 요약의 다이어그램도 그립니다.pi auth login <provider>는 세션을 시작하지 않고 셸에서 제공자에 로그인합니다. 예: pi auth login radius. 브라우저에서 계정으로 로그인한 후 종료합니다. --api-key를 사용하면 대신 API 키를 저장하고, --no-browser를 사용하면 기기 코드 또는 코드 복사 방식으로 로그인합니다. Radius에 로그인하면 Radius MCP 서버도 함께 설정됩니다. pi auth logout <provider>는 /logout과 같이 저장된 자격 증명을 제거합니다.ctx.ui.custom() 오버레이가 이제 blocked 옵션을 준수합니다. 오버레이가 표시된 시점부터 done()을 호출할 때까지, setHidden()으로 숨겨진 동안에도 pi는 차단된 프로그램 상태(OSC 7501)를 보고합니다. 하나의 오버레이를 닫아도 다른 열린 질문은 계속 차단 상태를 유지합니다(#11816).qwen-token-plan-individual-cn 제공자를 추가했습니다. QWEN_TOKEN_PLAN_CN_API_KEY를 사용합니다(#7989, @bigoldcat123 기여).models.classify()도 포함됩니다(#11679, @Marvae 기여).compat.promptCacheKeyMode("auto", "enabled", "disabled")를 추가했습니다. 호환되는 프록시에서는 프롬프트 캐시 키를 활성화하고, 이를 거부하는 엔드포인트에서는 생략할 수 있습니다. pi 사용 시 models.json에서 설정하세요(#9442, @dannote 기여).compat.requiresNonNullAssistantContent를 추가했습니다. 도구 호출만 포함된 어시스턴트 메시지에서 null 대신 빈 문자열을 요구하는 OpenAI 호환 엔드포인트용입니다. pi 사용 시 models.json에서 설정하세요(#8118, @gaoyk19 기여).anthropic 제공자에 Claude Fable 5.2(claude-fable-5-2)를 추가했습니다(입력/출력 100만 토큰당 $8/$40, 1M 컨텍스트, 128K 출력). Fable 5.1과 마찬가지로 메시지별 effort와 대화 중간의 시스템 메시지를 사용합니다. 안전 분류기가 출력 전에 거부한 요청은 서버 측 폴백을 통해 Claude Opus 5가 응답하며, 요금은 Opus 5 가격으로 청구됩니다. OpenRouter의 anthropic/claude-fable-5.2 등 다른 제공자의 Claude Fable 5.2와 Mythos 5.2도 같은 메시지별 effort 지원을 받습니다.anthropic 제공자의 기본 모델이 Claude Opus 4.8(claude-opus-4-8)에서 Claude Opus 5.5(claude-opus-5-5)로 변경되었습니다.amazon-bedrock은 Claude Opus 5.5, azure는 GPT-6.1 Sol, google과 google-vertex는 Gemini 4 Argon, vercel-ai-gateway와 baseten은 GLM 5.3, minimax와 minimax-cn은 MiniMax-M3, qwen-token-plan과 qwen-token-plan-cn은 Qwen3.8 Max, opencode-go는 Kimi K3.1 Pro입니다. moonshotai, moonshotai-cn, huggingface, opencode, openrouter, cloudflare-workers-ai, cloudflare-ai-gateway는 Kimi K2.6 대신 Kimi K2.7 Code를 사용합니다.cacheWarming의 기본값이 "streaming"에서 "idle"로 변경되었습니다. pi는 에이전트 실행 사이에도 최대 30분 동안 적합한 프롬프트 캐시를 따뜻하게 유지하지만, 이는 갱신이 비용을 상쇄할 것으로 예상되는 경우에만 적용됩니다. 이전 동작을 원하면 전역 설정에서 "cacheWarming": "streaming"을 설정하세요.Cache warmed: $<total> 한 줄로 표시됩니다./login과 모델 선택기에서 "OpenAI Codex (legacy)" 대신 다시 "OpenAI Codex"로 표시됩니다./login과 /logout 제공자 목록 및 /login <provider> 자동완성에서 우선 파트너인 Radius와 OpenRouter가 먼저 표시되고, 나머지 제공자는 알파벳 순으로 표시됩니다. 제공자 목록에서 파트너는 ✦로 표시되며, 선택된 Radius 행은 Radius 로고 색상으로 반짝이고, 선택된 OpenRouter 행은 OpenRouter 브랜드 색상(어두운 테마에서는 라임, 밝은 테마에서는 바이올렛)으로 빛납니다.glob 매칭이 path 기준이 아니라 pi를 시작한 폴더 기준으로 동작하던 문제를 수정했습니다. path: "repo"일 때 glob: "migrations/main/*.js"는 repo/migrations/main/a.js가 존재함에도 No matches found를 반환했습니다. 이제 glob은 path를 기준으로 상대 경로가 적용되며, 이는 grep이 결과를 출력하는 형식과 같습니다. path가 심볼릭 링크인 경우에도 동일합니다. 앞의 ./(예: ./src/*.ts)는 무시되어 아무것도 매칭하지 않던 문제가 해결되었습니다(#11807, #10998).doesn't처럼 단어 안의 아포스트로피는 더 이상 따옴표를 시작하지 않으며, 닫는 짝이 없는 따옴표는 텍스트로 유지됩니다. "..." 안의 \"(또는 '...' 안의 \')는 리터럴 따옴표가 됩니다(#11861).Command timed out만 보고하던 문제를 수정했습니다. 이제 오류 메시지에 셸의 종료 코드와 종료 시점도 함께 표시됩니다(#11613).prompt() 포함)가 이제 유휴 상태 프롬프트의 이미지와 같이 크기가 조정됩니다. 기존에는 원본 크기로 전송되고 저장되었습니다(#11738)./mcp에서의 Ctrl+C와 pi mcp login의 --timeout은 이제 다른 pi 프로세스의 토큰 갱신을 최대 25초 기다리는 동안에도 로그인for를 중지합니다. 또한 해당 대기 이외의 이유로 갱신 잠금이 실패하면 브라우저를 여는 대신 로그인이 실패합니다."auth": { "provider": "<provider>" }를 사용하는 MCP 서버(예: Radius)가 제공자에 로그인되어 있는데도 pi mcp list에서 로그인이 필요하다고 보고하던 문제를 수정했습니다. 셸 명령이 토큰을 전송하지 않았기 때문입니다. 이제 제공자의 /login 토큰을 전송하며, 만료된 경우 갱신합니다. 이런 서버의 로그인 안내에는 pi mcp login 대신 /login <provider>가 표시되며, pi mcp login과 pi mcp logout은 "does not use OAuth"로 실패하는 대신 /login과 /logout을 안내합니다.ctx.shutdown()(예: 타이머에서 호출된 경우)을 무시하던 문제를 수정했습니다. 그 결과 클라이언트가 다른 명령을 보낼 때까지 프로세스가 계속 실행되었습니다. 이제 pi는 유휴 상태에서 즉시 종료하며, 확장 명령이 요청한 종료는 해당 명령의 prompt 응답이 기록될 때까지 기다립니다(#11599).0.1.5-20261020.7과 같은 프리릴리즈 접미사가 있을 때, 변경 로그 노트가 새로 실행할 때마다 반복 표시되던 문제를 수정했습니다. 저장된 버전이 0.1.0으로 읽혀 0.1.1부터 0.1.5까지의 노트가 매번 새것으로 집계되었습니다. 이제 major.minor.patch 형식이 없는 저장된 버전은 노트를 표시하지 않고 설치된 버전으로 대체되며, 전체 변경 로그를 보여주지 않습니다(#11703).context가 설정되었을 때 grep 도구가 일치한 모든 파일을 메모리에 읽어 큰 파일에서 메모리가 부족해지던 문제를 수정했습니다. 이제 컨텍스트는 ripgrep에서 가져오며, 이로써 UTF-16 파일과 일치한 줄의 단독 CR 문제도 해결되었습니다. 또한 정확히 limit개의 일치 항목이 있을 때 일치 한도 안내가 더 이상 표시되지 않습니다(#9276, #11423).limit개의 파일이 일치할 때 find 도구가 결과 한도를 보고하던 문제와, find와 ls에서 limit: 0이 모든 결과 또는 빈 목록을 반환하던 문제를 수정했습니다. 이제 1보다 작은 한도는 1로 처리됩니다(#7121).src\**\*.ts처럼 Windows 구분자를 사용하는 패턴이나, fd 10.5.1(pi가 이제 다운로드하는 버전)에서 src/**/*.ts와 같은 모든 경로 패턴에 대해 find 도구가 결과를 반환하지 않던 문제를 수정했습니다. 이제 Windows 경로 패턴은 모든 fd 버전에서 동일하게 매칭됩니다. src/**/*.ts는 src/ 바로 아래의 파일도 찾고, src/*.ts는 하위 디렉터리의 파일을 더 이상 찾지 않습니다(#9262).offset/limit을 사용하더라도 큰 파일에서 메모리가 부족해지던 문제를 수정했습니다. 이제 파일을 스트리밍하며 표시되는 줄만 유지합니다. 사용자 정의 ReadOperations도 새로운 선택적 createReadStream을 제공하면 스트리밍할 수 있습니다(#9654).openai, anthropic 같은 OAuth 로그인이 invalid_grant로 실패하던 문제를 수정했습니다. 예를 들어 시작 직후 백그라운드 카탈로그 갱신이 실행되는 동안 pi를 중지하는 RPC 클라이언트가 이에 해당합니다. 토큰 엔드포인트는 이미 갱신 토큰을 교체했지만, pi가 새 토큰을 저장하기 전에 종료되었습니다. 이제 종료 시 진행 중인 토큰 갱신이 저장될 때까지 기다립니다(#11692).ctx.ui.custom({ overlay: true })를 두 개 이상 열어둔 상태에서 /reload나 세션 전환을 하면, 최상단 오버레이만 제거되고 나머지는 화면에 남아 포커스와 입력을 유지하던 문제를 수정했습니다. 이제 숨겨진 오버레이를 포함한 모든 확장 오버레이가 제거되고 정리됩니다. pi 자체 오버레이는 열린 상태를 유지합니다./mcp 로그인이 "Connecting…" 상태로 몇 분간 머물고 Ctrl+C가 동작하지 않던 문제를 수정했습니다. pi는 브라우저가 OAuth 콜백 포트에 대한 사용되지 않는 연결을 끊기를 기다리고 있었습니다. 이제 콜백 서버는 종료 시 남은 연결을 모두 닫습니다(#11311).zsh: abort로 중단되던 문제를 수정했습니다. 이미지 크기 조정마다 워커 스레드가 시작되는데, pi가 이전 워커의 종료를 기다리지 않아 이전 워커가 아직 종료 중일 때 새 워커가 시작되었습니다. 이 충돌은 Node 버그일 가능성이 가장 높으며 Linux에서는 재현되지 않았습니다. 이제 이미지 크기 조정은 이전 워커가 멈출 때까지 기다리며, 이로 인해 이미지당 약 15ms가 추가됩니다(#10695).tool_search와 searchTools()가 MCP 입력 스키마에서 모델을 $defs에 정의한 경우처럼 로컬 $ref 뒤에 있는 도구를 속성 이름과 설명으로 찾지 못하던 문제를 수정했습니다. 참조된 정의는 한 번만 읽으므로 재귀 스키마에서도 무한 루프가 발생하지 않으며, 아무도 참조하지 않는 정의는 검색 텍스트에 포함되지 않습니다(#11803).resolves to 요약이 로컬 $ref 뒤의 필드 이름을 누락하던 문제를 수정했습니다. 예를 들어 MCP 출력 스키마가 모델을 $defs에 정의한 경우, structuredContent?: { results } 대신 structuredContent?로 표시되던 문제가 해결되었습니다(#11803).#/$defs/%E0)가 포함된 $ref가 있으면, 해당 도구를 호출하지 않는 스크립트까지 포함해 모든 코드모드 스크립트가 URI malformed로 실패하던 문제를 수정했습니다. 이제 해당 매개변수는 도구 선언에서 unknown으로 표시됩니다(#11803).! 및 !! 명령의 출력을 ctrl+o로 펼치거나 접을 수 없던 문제를 수정했습니다. 새 !/!! 출력은 이제 현재 펼침 상태로 시작하며, 조종 또는 후속 메시지가 대기열에 들어가도 출력이 사라지지 않습니다. 또한 에이전트 작업이 끝나면 다음 제출 메시지 시점이 아니라 그 시점에 채팅으로 이동합니다(#11875)./tree로 /thinking 변경 이전 지점으로 이동한 후 세션을 재개하면 이전 사고 수준이 복원되던 문제를 수정했습니다. 모델과 마찬가지로, 이제 현재 사고 수준이 다음 프롬프트와 함께 새 브랜치에 기록됩니다(#11451).irm https://pi.dev/install.ps1 | iex)이 Windows PowerShell 5.1에서 npm이나 Node.js가 경고를 출력할 때 NativeCommandError로 중단되던 문제를 수정했습니다. 예를 들어 알 수 없는 .npmrc 키로 인한 npm warn Unknown user config가 해당합니다. 기존 npm 설치를 마이그레이션할 때 작업 메뉴 이전에 실패했고, 관리형 설치 중에도 실패했습니다. 또한 잘못된 managed-install.json이 있으면 오류를 보고하는 대신 설치 프로그램이 중단되었습니다(#11944).pi update --models가 Could not refresh model catalogs: openai: OAuth refresh failed for openai: ... invalid_grant로 실패하던 문제를 수정했습니다. pi.dev에서 카탈로그를 가져오는 내장 제공자(예: openai)는 이제 카탈로그 갱신을 위해 OAuth 토큰을 전혀 갱신하지 않습니다. 로그인으로 모델 목록을 가져오는 제공자(Radius, OpenRouter 등)의 토큰 갱신이 실패하면, 제공자 이름과 pi auth login <provider>를 안내하는 경고를 출력하고 다른 카탈로그는 계속 갱신됩니다. 네트워크 오류 등 다른 오류가 있을 때만 명령이 실패합니다.git push 2>&1 | Select-Object -Last 3처럼 stderr가 리디렉션된 경우, powershell 도구가 Command exited with code 1을 보고하던 문제를 수정했습니다. Windows PowerShell 5.1은 이 stderr를 오류 레코드로 변환합니다. 이제 이러한 명령은 PowerShell 7이 보고하는 종료 코드를 보고합니다(#8842).[paste #2]와 같은 짧은 마커가 손상되어, 붙여넣은 내용 대신 마커 텍스트가 제출되던 문제를 수정했습니다(#11923).session-id 친화성(affinity) 헤더 대신 session_id를 전송하던 문제를 수정했습니다(#11639).! 및 !! 명령이 잘림 안내와 전체 출력 파일 링크를 생략하던 문제를 수정했습니다(#10165, @acmerfight 기여).pi config가 keybindings.json의 사용자 정의 키 바인딩을 무시하던 문제를 수정했습니다(#11651).auth.json에 대한 동시 OAuth 갱신이, 해석된 파일의 잠금을 공유하도록 수정했습니다(#11655).TERM_PROGRAM이 설정되지 않았을 때 Alacritty 하이퍼링크가 활성화되지 않던 문제를 수정했습니다. 이제 감지에 TERM과 ALACRITTY_WINDOW_ID도 사용합니다(#11767).strict: "prefer" 도구를 매 요청마다 다시 strict로 보내던 문제를 수정했습니다. 이로 인해 턴마다 거부된 요청(400)이 발생했습니다. 이제 같은 sessionId의 이후 요청은 cleanupSessionResources(sessionId)가 호출되기 전까지 이 도구들을 즉시 non-strict로 보냅니다(#11626).Type.BigInt() 및 Type.Undefined() 매개변수의 도구 인수가 거부되던 문제를 수정했습니다. pi-schema가 두 타입을 지원하게 되어, TypeBox가 변환하는 방식("42"와 42는 42n으로, null은 undefined로)대로 변환됩니다. Type.Void()는 여전히 모든 JSON 인수를 거부합니다.This endpoint's maximum context length is ... 400 오류로 요청을 거부하던 문제를 수정했습니다. OpenRouter는 자체 토크나이저로 입력을 계산하는데, 제공자의 계산보다 몇 퍼센트 높을 수 있습니다. 그런데 pi는 4,096 토큰만 여유 있게 남겨두었습니다. 그 결과 pi는 이 400을 컨텍스트 초과로 판단하고 세션을 컴팩션했으며, 윈도우의 약 20%만 사용한 상황에서도 그랬습니다. 이제 기본 출력 한도는 추정 입력의 15%를 여유로 남기며, 윈도우가 거의 가득 찬 경우에도 최대 32,768 출력 토큰만 요청합니다(#10497).$defs와 definitions를 누락하여, 속성의 $ref가 아무것도 가리키지 않던 문제를 수정했습니다. 그 결과 Claude가 이런 도구(MCP 서버에서 흔함)에 잘못된 인수를 생성했습니다. 예를 들어 객체 대신 JSON 문자열을 만들었고, 일부 Anthropic 호환 게이트웨이는 요청 자체를 거부했습니다(#9557).Invalid signature in thinking block ... bound to a different conversation)으로 실패하던 문제를 수정했습니다. 이로 인해 세션이 모든 재시도에서 계속 실패했습니다. 이제 OpenCode Go와 Zen의 Claude 5.5 모델, Opus 5, Fable 5.1은 Anthropic 제공자와 마찬가지로 메시지별 effort를 사용하고 thinking.block_binding: drop_block을 전송합니다(#10954).<!-- ... -->)을 보이는 텍스트로 표시하던 문제를 수정했습니다(#11710).console.* 출력과 던져진 Error가 아닌 값이 NaN, Infinity, -Infinity를 null로 출력하던 문제를 수정했습니다(#11901).분량 관계로 이후 내용은 번역에서 제외했습니다. 전체 내용은 위 원문 링크에서 확인하세요.