OpenCode의 권한 시스템을 전면 개선하는 주요 변경 사항입니다.
도구 설정을 권한에 병합
도구 구성이 더 이상 사용되지 않으며 권한 필드에 병합되었습니다. 이전에는 다음과 같이 도구를 활성화/비활성화할 수 있었습니다:
{ "tools" : { "bash" : true , "edit" : false } }
이제 다음과 같이 권한을 사용하여 구성해야 합니다:
{ "permission" : { "bash" : " allow " , "edit" : " deny " } }
이전 도구 구성은 이전 버전과의 호환성을 위해 여전히 지원되며 자동으로 권한 시스템으로 마이그레이션됩니다.
객체 구문을 사용한 세분화된 권한
이제 권한은 패턴 매칭을 사용하는 객체 구문으로 세분화된 제어를 지원합니다. 권한을 객체로 지정하면 다른 패턴에 대해 다른 규칙을 설정할 수 있습니다:
{ "permission" : { "bash" : { "npm " : " allow " , "git " : " allow " , "rm " : " deny " , "" : " ask " }, "edit" : { ".md" : " allow " , ".ts" : " ask " , "*" : " deny " } } }
객체의 각 키는 도구의 입력과 일치하는 글로브 패턴이며, 값은 수행할 작업입니다:
"allow" - 자동으로 승인
"deny" - 자동으로 거부
"ask" - 사용자에게 승인 요청
간단한 문자열을 사용하여 포괄적인 권한을 설정할 수도 있습니다:
{ "permission" : { "bash" : " allow " , "edit" : " ask " } }
또는 한 번에 모든 권한을 설정할 수 있습니다:
{ "permission" : " allow " }
SDK 사용자를 위한 주요 변경 사항
권한 이벤트가 크게 변경되었습니다. 새로운 PermissionNext 모듈(permission/next.ts)은 이전 Permission 모듈(permission/index.ts)과 다른 이벤트 구조를 가집니다:
이전 이벤트 구조(Permission.Event):
Updated : { id, type, pattern, sessionID, messageID, callID, message, metadata, time }
Replied : { sessionID, permissionID, response }
새로운 이벤트 구조(PermissionNext.Event):
Asked : { id, sessionID, permission, patterns, metadata, always, tool: { messageID, callID } }
Replied : { sessionID, requestID, reply }
주요 차이점:
이벤트 이름이 permission.updated에서 permission.asked로 변경
type이 permission으로 이름 변경
pattern이 이제 patterns(문자열 배열)로 변경
message 필드 제거
response가 reply로 이름 변경
permissionID가 requestID로 이름 변경
새로운 always 필드에는 사용자가 "항상" 선택 시 향후 요청에 대해 승인될 패턴이 포함됨
응답 값은 동일합니다: "once" , "always" , 또는 "reject"
서버 변경 사항
새 엔드포인트: POST /permission/:requestID/reply 권한 요청에 응답하기 위한 것
이전 엔드포인트 POST /session/:sessionID/permissions/:permissionID 는 이제 더 이상 사용되지 않음
GET /permission은 이제 Permission.Info[] 대신 PermissionNext.Request[]를 반환
server.cors 구성 옵션을 통해 CORS 화이트리스트 지원 추가
프록시된 정적 자산에 대한 Content-Type 헤더 추가
mDNS 서비스 이름에 고유성을 위해 포트 포함
기타 변경 사항
에이전트 tools 필드는 더 이상 사용되지 않음 - 대신 permission 사용
에이전트 maxSteps 는 더 이상 사용되지 않음 - 대신 steps 사용
알 수 없는 에이전트 속성은 이제 options에 수집됨
모드 및 플러그인 글로브는 더 이상 하위 디렉터리를 검색하지 않음 (최상위 레벨만 간소화)
코어
TUI에서 더 나은 디버깅 워크플로를 위한 개발 스크립트 추가
첫 실행 시에만 @opencode-ai/plugin 존재 보장
MCP 리소스 지원 추가 ( @paoloricciuti )
워크트리에서 구성 초기화
GitHub Copilot에서 작은 모델에 대해 무료 GPT-5-mini 우선 순위 지정
하드코딩된 .env 읽기 블록 제거 및 새 권한 모델 대신 사용
플러그인 함수 초기화 중복 방지 ( @ShpetimA )
GitHub Copilot 모델 우선 순위 목록 업데이트
채팅 메시지 입력에 변형 필드 추가
AGENTS.md 문서 업데이트 ( @aryasaatvik )
종속성 설치 및 git 워크트리 브랜치 생성 문제 해결
코드베이스의 문제 해결
프로젝트당 여러 디렉터리에서 작업할 수 있도록 git 워크트리에 대한 샌드박스 지원 추가
MCP 클라이언트 연결 호출에 타임아웃 추가 ( @RhysSullivan )
프로젝트별 MCP 구성 재정의 추가 ( @jknlsn )
Kotlin 언어 서버에서 Gradle 다중 프로젝트 빌드에 대한 루트 감지 개선 ( @JBou )
기본 제공 플러그인 실패를 정상적으로 처리하도록 플러그인 로딩 개선
더 나은 사용자 피드백을 위해 권한 대화 상자에 거부 메시지 지원 추가
대기 중인 사용자 메시지를 주제에 집중하도록 하는 알림과 함께 래핑
관리되는 git 워크트리 추가
GPA를 사용하여 OpenTUI를 v0.1.68로 업그레이드
더 나은 키보드 탐색을 위해 권한 대화 상자에 이스케이프 키 처리 추가
TUI 세션 선택 API 엔드포인트 추가 ( @code-yeongyu )
Kotlin LSP 통합 ( @tjg184 )
구성 파일 간 지침 배열 병합 ( @elithrar )
최소 모드에 대한 변형 지원 추가
Cloudflare AI Gateway SDK 채팅 정의되지 않은 오류 수정 ( @englishm )
동기화 중 공유되지 않은 세션에 대한 NotFoundError 처리 ( @Hona )
기본 제공 플러그인 실패를 정상적으로 처리하도록 플러그인 로딩 개선
CI 구성 업데이트
다시 로드 기능 추가 및 재설정 기능이 있는 지연 유틸리티 개선
메모리 누수 수정 문서 제거 후 구현
세션 관리의 메모리 누수 수정 및 권한 오류 처리 개선
새로운 평가 함수 서명에 대한 TUI 권한 테스트 수정
TUI에서 권한 오류 처리 및 평가 논리 개선
세션 내보내기에 어시스턴트 메타데이터 추가 ( @dmmulroy )
rm, cd 등과 같은 특수 bash 명령에 대해 새로운 권한 변경 사항이 작동하는지 확인
권한 시스템 재작업
GitHub Copilot에 대한 오래된 Haiku 필터 제거 ( @alcpereira )
종속성 설치를 비차단으로 만들기
프록시 뒤에 있을 때 연결 정지를 방지하기 위해 --no-cache 플래그 사용
finish-step에서 컨텍스트 오버플로 중간에 확인 ( @aryasaatvik )
명령에 잘못된 에이전트가 사용된 경우 오류 표시 ( @Leka74 )
프록시된 정적 자산에 대한 Content-Type 헤더 추가 ( @monotykamary )
TUI
TUI에서 누락된 테마 목록 키바인드 추가 ( @aspiers )
에이전트가 PR을 생성할 때 중복 PR 생성 처리 ( @elithrar )
TUI에서 시스템 테마 차이 강조 표시 수정
실행 명령에 --variant 플래그 추가 ( @shuv1337 )
OpenRouter 제공자를 우선 순위 목록에서 제거
LSP가 활성화되지 않은 경우 LSP 상태 아이콘을 음소거로 만들기 ( @itsrainingmani )
MCP 서버가 활성화되지 않은 경우 MCP 상태 아이콘을 음소거로 만들기 ( @itsrainingmani )
TUI에서 SDK 클라이언트에 첨부 디렉터리 전달 ( @shuv1337 )
actions/checkout v6 자격 증명 저장소 변경 처리 ( @elithrar )
Promise와 setTimeout 대신 Bun.sleep 사용 ( @edlsh )
오사카 자드 테마 추가 ( @st-eez )
메모리 사용량 디버깅을 위한 힙 스냅샷 옵션을 시스템 메뉴에 추가
세션 목록에서 Windows 대체 "less" 명령 수정 ( @itsrainingmani )
파일 경로를 제대로 처리하도록 가져오기 명령 정규식 수정
통계 명령 일 계산 및 시간 필터링 수정
데스크톱
앱에서 스크롤 위치 복원 수정
Windows에서 Ctrl+A 재정의 방지
애플리케이션의 자동 스크롤 동작 개선
데스크톱 애플리케이션에서 프로젝트 편집 수정 ( @dbpolito )
경로를 유지하도록 서버 URL 정규화 업데이트 ( @OpeOginni )
세션 뷰어에서 이미지 미리보기 지원 추가 ( @shuv1337 )
대화 기록을 압축하는 /compact 세션 명령 추가
데스크톱 애플리케이션의 창 드래그 영역 레이아웃 조정
요청 시간 초과 완화
데스크톱 앱에서 권한 컨텍스트를 위해 세션 ID를 제대로 디코딩 ( @OpeOginni )
애플리케이션 기능 작업 진행 중
애플리케이션 시작 시간 개선
진행 중인 데스크톱 기능 추가
앱에 파일 컨텍스트 기능 추가
데스크톱 창 크기 조정 핸들 개선 ( @dbpolito )
30명의 커뮤니티 기여자에게 감사드립니다.
(기여자 목록은 원문과 동일하게 유지)