collapseChangelog로 알림을 간략하게 줄일 수 있습니다. Show a changelog를 참고하세요.PI_SELF_UPDATE_COMMAND 또는 selfUpdateCommand를 사용해 래퍼나 다른 패키지 관리자를 통해 pi를 업데이트할 수 있습니다. Custom update command를 참고하세요.off를 지원합니다. Codex는 500K 컨텍스트 윈도우를 제공합니다. Models를 참고하세요.@earendil-works/pi-schema에서 실행됩니다. JSON Schema 바깥의 TypeBox 기능(Type.Refine(), Type.BigInt(), Type.Undefined(), 코덱, Format.Set() 형식)은 더 이상 도구 인자에 적용되지 않습니다. 자세한 내용은 Tool parameter schemas and TypeBox를 참고하세요. MCP 도구를 포함한 일반 JSON Schema 도구도 이제 TypeBox 도구와 같은 강제 변환(숫자 문자열 변환, 단일 값을 배열로 감싸기 등)을 적용받습니다. 모델이 보는 검증 실패 메시지는 TypeBox 메시지(must have required properties path, must be number) 대신 pi-schema 메시지(- path: missing, - limit: expected number, got string)로 표시됩니다.package.json에 있는 pi.changelogPath 또는 패키지 루트의 CHANGELOG.md를 읽고, 처음 실행할 때 마지막으로 확인한 버전보다 새로운 항목을 "Extension Updates" 아래에 표시합니다. collapseChangelog 설정을 사용하면 패키지당 한 줄로 줄어듭니다 (#5958, #8790)pi.exec()에 stdout과 stderr를 합친 출력 크기를 제한하는 maxBuffer 옵션이 추가되었습니다. 결과의 truncated 필드는 출력이 제한을 넘으면 true가 됩니다 (#11360)openBrowserOnConfirm: false 또는 copyCodeOnConfirm: false로 각 동작을 끌 수 있습니다 (#9282, #9301)pi update로 래퍼나 다른 패키지 관리자를 통해 Pi를 업데이트할 수 있습니다. PI_SELF_UPDATE_COMMAND(예: mise use -g npm:{packageName}@{version}) 또는 전역 selfUpdateCommand 설정을 지정하면, pi.dev에서 새 릴리스를 확인했을 때 pi update가 이를 실행하며 {packageName}, {version}, {installSpec}을 해당 릴리스 정보로 채웁니다. Custom update command를 참고하세요 (#7756, #5607)keyText(), keyHint()로 사용자가 설정한 키 바인딩을 표시할 수 있습니다. @earendil-works/pi-coding-agent에서 이 함수들을 직접 가져오면 확장 프로그램 자체의 패키지 사본이 사용될 수 있는데, 이 사본은 pi의 키 바인딩을 인식하지 못합니다. 그래서 keyHint("app.tools.expand", "to expand") 같은 힌트가 키 없이 렌더링되었습니다. 문서는 이제 주입된 함수를 사용하도록 권장합니다 (#4748)messageId와 ISO timestamp가 MarkdownTransformContext에 추가되었습니다. 저장된 항목을 렌더링할 때 사용할 수 있으며, 실시간 렌더링에서는 undefined입니다 (#7952 by @vipentti)ctx.ui.custom() 컴포넌트에 blocked 옵션이 추가되었습니다. 이를 통해 승인 프롬프트 등 사용자 지정 대화상자가 pi가 사용자 입력을 기다리고 있음을 알릴 수 있습니다. 오버레이는 이 옵션을 무시합니다. Custom screens and overlays를 참고하세요 (#11428)Usage.cost.totalFromProvider가 추가되었습니다. 합산 사용량은 모든 구성 요소가 제공자 보고 값일 때만 제공자 보고 값으로 표시됩니다 (#11178)responseModel 메타데이터가 추가되었습니다. 가상 모델을 요청한 경우에도 포함됩니다. AssistantMessage를 참고하세요 (#11265)off를 지원합니다. Codex는 500K 컨텍스트 윈도우를 제공합니다.@earendil-works/pi-ai에서 Type, Static, TSchema를 가져올 수 있습니다. pi-ai 자체가 더 이상 TypeBox를 재내보내지 않으므로, Pi는 이 가져오기를 pi-ai의 호환 엔트리와 Pi에 번들된 TypeBox로 연결합니다. 여기서 StringEnum은 여전히 TypeBox TUnsafe<T>입니다. 내장 도구 팩토리(createReadTool() 등)는 TypeBoxAgentTool<typeof schema>를 반환하며, 이를 통해 params는 TypeBox 타입을 유지합니다.pi update가 더 이상 npm ci에 --min-release-age=0을 전달하지 않습니다. 릴리스 lockfile이 모든 패키지를 고정하므로 이 플래그는 효과가 없었고, 이를 차단하는 보안 스캐너 때문에 업데이트가 중단되었습니다 (#11262)/model과 /scoped-models는 모델 이름이 ID에 없는 단어를 추가하는 경우(예: 이름이 바뀐 models.json 재정의) ID 옆에 모델 이름을 표시합니다 (#5916, #11347)oauth.clientRegistration: "auto"는 clientName이나 기본값이 아닌 callbackUrl이 설정되어 있으면 등록하며, "dcr"은 항상 등록합니다. pi mcp add --oauth-client-registration으로 모드를 설정합니다 (#11426)gpt-5.5에서 gpt-6.1-sol로 변경했습니다. 모델이 선택되지 않은 상태에서 ChatGPT에 로그인한 경우에도 적용됩니다 (#11442)AGENTS.md만 있는 폴더)에서 저장된 "Do not trust" 결정이 무시되던 문제를 수정했습니다. pi는 이런 프로젝트를 자동으로 신뢰했기 때문에 ctx.isProjectTrusted()가 true를 반환했고, 패키지 명령도 이들을 신뢰된 것으로 처리했습니다. 이제 trust.json의 저장된 결정이 우선하며, 저장된 결정이 없을 때만 자동 신뢰가 적용됩니다 (#10947)ESC + Return을 보내는 Apple Terminal 환경에서 Shift+Enter가 줄바꿈을 삽입하지 않고 후속 입력을 큐에 넣던 문제를 수정했습니다. pi는 이제 일반 Return에서 이미 그렇게 하던 것처럼 해당 시퀀스에 대해서도 로컬 Shift 키 상태를 확인합니다. Shift 없이 Alt+Enter를 누르면 여전히 후속 입력이 큐에 들어갑니다 (#11559)pi.setActiveTools() 목록을 역순으로 전달한 경우입니다. 계속 활성 상태인 도구는 기존 순서를 유지하고, 새로 활성화된 도구는 뒤에 추가됩니다 (#11495)pi.exec()가 RangeError: Invalid string length로 pi를 크래시시키던 문제를 수정했습니다. 기본 출력 상한은 256 MiB와 런타임 문자열 한도 중 더 작은 값입니다. 상한을 넘으면 명령이 종료되고 결과에 truncated: true와 0이 아닌 종료 코드가 포함됩니다 (#11360)pi.exec()가 끝나지 않던 문제를 수정했습니다. 이제 의도대로 5초 후 SIGKILL을 보냅니다.~/.pi를 dotfiles 저장소에 연결하는 등 심볼릭 링크를 통해 에이전트 디렉터리에 접근할 때 pi install과 pi remove가 npm package-lock.json에 점점 더 깊게 중첩된 항목을 추가하던 문제를 수정했습니다. 이제 pi는 npm에 실제 경로(resolved real path)를 전달합니다 (#11358)http: 또는 https:가 아닌 인증 엔드포인트와 기타 OAuth 메타데이터 URL을 거부합니다. 이전에는 악성 MCP 서버가 file: 또는 사용자 지정 프로토콜 URL을 제공할 수 있었고, pi는 이를 플랫폼 URL 핸들러에 전달했습니다.fd와 rg를 자동으로 내려받을 때 x86-64 바이너리를 가져오던 문제를 수정했습니다. 이제 pi는 경고를 표시하고 시스템 패키지 관리자로 도구를 설치하도록 권장합니다 (#11209)/model 검색에서 항목 앞부분에 흩어진 글자가 실제 일치 항목보다 위에 랭크되던 문제를 수정했습니다. 예를 들어 opus를 검색하면 claude-opus-4.1 앞에 gpt-oss-120b와 claude-sonnet-4.5가 나열되었습니다 (#11220, #11296)/resume 검색이 세션 메시지와 ID 어디에서나 흩어진 글자와 매칭되던 문제를 수정했습니다. 예를 들어 1024가 세션 UUID 내부와 매칭되었습니다. 세션 이름과 작업 디렉터리는 여전히 퍼지 매칭되며, ID와 메시지 텍스트는 이제 정확한 부분 문자열로만 매칭됩니다 (#11220, #11024, #11296)/reload 이후의 섹션 업데이트 등)가 표시되지 않던 문제를 수정했습니다. pi --export에는 이제 시스템 프롬프트와 도구도 포함됩니다 (#11261, #3464, #11290)long_step; next_step 같은 명령 목록의 다음 명령이 실행되던 문제를 수정했습니다. 이제 pi는 프로세스 그룹을 먼저 중지한 뒤 종료합니다 (#11252, #11289)/settings, 모델·스코프 모델·로그인·fork·/mcp·llama.cpp 선택기에서 tui.select.pageUp과 tui.select.pageDown이 무시되던 문제를 수정했습니다. 전체 화면 모드에서 PageUp/PageDown은 이제 대화 기록을 스크롤하는 대신 열린 목록이나 자동완성 메뉴를 이동합니다. Ctrl+V에 바인딩된 페이지 키는 이미지 붙여넣기 대신 자동완성을 넘깁니다 (#7629, @muyiyr의 #7680 기반)! 명령 출력에서 <, =, > 접두사가 붙은 제어 시퀀스의 매개변수가 텍스트로 표시되던 문제를 수정했습니다. 예를 들어 마우스 보고 ESC[<35;59;1M은 35;59;1M으로, 터미널 응답 ESC[>0;276;0c는 0;276;0c로 보였습니다. 키패드 모드 시퀀스 ESC=와 ESC> 뒤의 텍스트는 계속 유지됩니다 (#11377)pi -e npm:<pkg>가 처음 다운로드한 버전에 계속 머물던 문제를 수정했습니다. 시작할 때와 /reload할 때마다 정확한 버전이 지정되지 않은 -e npm 패키지는, 레지스트리에 일치하는 더 새로운 버전이 있으면 다시 설치됩니다. pi -e git:<repo>@<branch>도 같은 이유로 처음 체크아웃한 상태에 머물렀지만, 이제 해당 브랜치를 가져와 재설정합니다. 이미 체크아웃된 커밋 해시 참조는 가져오지 않습니다. 오프라인 모드와 확인 실패 시에는 캐시된 사본을 유지합니다 (#11375, #11590)c:\Users\me 대 C:\Users\me) ~/.agents/skills의 스킬이 프로젝트 스킬과 사용자 스킬로 두 번 로드되어 이름 충돌로 보고되었습니다. 같은 불일치로 저장된 프로젝트 신뢰를 다시 묻거나, 사용자 지정 세션 디렉터리의 세션을 --continue와 /resume에서 숨기거나, pi remove가 설정된 로컬 패키지와 일치하지 못하기도 했습니다 (#10488)~ 접두사가 깨진 채로 표시되던 문제를 수정했습니다. 예를 들어 홈이 /home/me일 때 /home/me2/project가 ~2/project로 표시되었습니다.pi mcp add와 pi mcp remove는 -l을 허용하지만 pi mcp login -l과 pi mcp logout -l은 Unknown option --local. 오류와 함께 실패하던 문제를 수정했습니다. 이제 -l을 사용하면 서버가 프로젝트 서버여야 합니다. 알 수 없는 옵션은 입력한 그대로 보고되며, 서버 이름을 잘못 입력하면 Did you mean "gurker"?처럼 제안이 표시됩니다.$PNPM_HOME/global-nub/ 아래의 래퍼처럼 PNPM_HOME 아래에만 있는 설치에서 pi update가 pnpm을 가리키던 문제를 수정했습니다. pi는 "not managed by a global pnpm install"이라고 말했습니다. 이제 해당 패키지 관리자가 설치를 실제로 소유한 경우에만 그 이름을 표시합니다 (#7756)powershell.exe와 explorer.exe 같은 Windows 프로그램은 \\wsl.localhost\... 경로가 260자를 넘는 디렉터리에서 시작할 수 없습니다. 이제 pi는 이런 도우미를 /에서 시작합니다 (#11592)External editor exited with code 1; prompt unchanged 같은 상태 메시지를 표시합니다 (#11592)peekaboo app 검색 시 mcp__peekaboo__app이 14위로 밀리던 것처럼, tool_search와 codemode searchTools()가 도구를 낮게 랭크하던 문제를 수정했습니다. 이제 질의 단어를 더 많이 포함한 도구가 더 적게 포함한 도구보다 위에 랭크됩니다. 도구 이름에 있는 질의 단어는 설명에 몇 번 언급된 것보다 높은 점수를 받습니다. 전체 이름이 질의에 포함된 도구는 큰 가점을 받습니다. 긴 서버 지침이 있어도 해당 서버 도구의 점수가 낮아지지 않습니다 (#11331)tool_search와 codemode searchTools()가 아무것도 찾지 못하던 문제를 수정했습니다. 토크나이저가 ASCII 문자와 숫자만 유지했기 때문입니다. 이제 모든 문자 체계의 단어가 매칭되며, 搜索记录처럼 단어 사이에 공백이 없는 텍스트도 단어로 나뉩니다. café와 cafe\u0301처럼 정규적으로 동등한 텍스트도 매칭됩니다 (#10816, @haoqixu의 #11037)pi update가 git clean -fdx failed with code 1로 중단되던 문제를 수정했습니다. Windows는 이런 파일을 삭제할 수 없어서, 업데이트 후 새 코드가 이전 의존성과 함께 남았습니다. 이제 pi는 경고를 표시하고, 그래도 의존성을 설치하며, 다음 업데이트에서 정리를 다시 시도합니다 (#11597)write 행은 업데이트와 펼치기 토글마다 전체 파일을, 스트리밍 중인 write는 델타마다 처음 50줄을, 스트리밍 답변은 델타마다 이전의 모든 코드 블록을 하이라이팅했습니다. 이제 행은 코드, 테마, 로드된 문법이 바뀔 때까지 마지막 하이라이팅 결과를 재사용하며, 어시스턴트 메시지는 스트리밍 중에도 렌더링된 Markdown 블록을 유지합니다 (#10971)pi update --extensions가 경고 없이 성공을 보고하던 문제를 수정했습니다. 이제 pi는 설치된 버전과 예상 버전을 함께 보고합니다 (#11536)[Skill conflicts] 라벨이 붙던 문제를 수정했습니다. 이제 [Skill warnings] 아래에 표시됩니다 (#11521)describeTool()을 참고하도록 안내합니다 (#11501)uv_cwd 스택 트레이스로 충돌하던 문제를 수정했습니다. 이제 pi는 사용자에게 존재하는 디렉터리로 바꾸라고 요청합니다 (#11509)/tree 브랜치 요약이 세션의 사고 수준을 무시해서, 추론 모델이 요약 요청을 지원하지 않는 none 노력 수준으로 거부할 수 있던 문제를 수정했습니다 (#11444)npm audit fix 안내도 포함되어 있었습니다 (#11409)grep 컨텍스트 줄 번호가 ripgrep의 일치 줄 번호와 어긋나던 문제를 수정했습니다 (#11398)--model <provider>/<id>가 실패하던 문제를 수정했습니다 (#11394)pi.exec()가 깨뜨리던 문제를 수정했습니다 (#11312)pi.exec()가 빈 stderr를 반환하던 문제를 수정했습니다. 이제 실행 오류 메시지를 보존합니다 (#11257, @muyiyr)/reload 때 다시 시도합니다. 명시적인 설치 및 업데이트 명령은 여전히 0이 아닌 종료 코드로 실패합니다 (#11304, @Lincoln504)undici를 8.12.3으로, Gondolin 확장 예제를 0.14.0으로 업데이트했습니다.1308)가 일시적인 HTTP 429 오류로 취급되어, 사용량 한도가 초기화되기 전까지는 성공할 수 없는 자동 재시도가 발생하던 문제를 수정했습니다 (#11537)ContextWindowExceededError가 컨텍스트 초과로 인식되지 않던 문제를 수정했습니다 (#11492)const 키워드를 보내던 문제를 수정했습니다. 이제 const는 단일 값 enum 스키마로 변환되며, 기본값, 예시, enum 값의 리터럴 데이터를 다시 쓰지 않고 __proto__라는 이름의 속성도 잃지 않습니다 (#11308)ORCA_IMAGE_PROTOCOL=kitty를 알리면 Kitty 이미지도 지원하는 것으로 인식됩니다 (#9329, @XRX193)role 'system' must precede an 'assistant' message로 실패하던 문제를 수정했습니다 (#11091)high 미만으로 제한한 계정에서 Claude 대화 중 사고 수준 변경이 Invalid effort level로 실패하던 문제를 수정했습니다 (#10063)prompt_cache_retention 매개변수를 보내 OpenCode DeepSeek V4.1 Flash 요청이 실패하던 문제를 수정했습니다.Missing namespace for function_call로 실패하던 문제를 수정했습니다 (#11415)~anthropic/claude-*-latest 별칭이 도구 호출 뒤 이전 사고 내용을 잃던 문제를 수정했습니다. 이제 Anthropic Messages API를 사용합니다 (#9534)~, ., \, +에서 경로와 토큰을 나누던 문제를 수정했습니다. 단어 문자는 이제 iTerm2 기본값과 일치합니다 (#10980)/tree 브랜치 요약이 실패한 어시스턴트 응답과 컨텍스트 편집으로 숨겨지거나 대체된 원본 내용을 포함하던 문제를 수정했습니다. 이제 요약은 실시간 요청과 압축과 같은 컨텍스트 편집을 따릅니다 (#11602)sandbox/ 확장 예제와 그 의존성을 제거했습니다. 대신 Gondolin 예제나 컨테이너화 가이드를 사용하세요.