OpenCode 세션을 안전하게 공유하고 링크를 해제하는 방법
OpenCode 공유 링크는 특정 동료에게만 허용되는 비공개 초대가 아니라 URL을 얻은 누구나 열 수 있는 공개 페이지입니다. 이 글은 노출 범위, manual과 disabled 선택법, 전체 세션의 민감정보 점검, /unshare 실행과 외부 확인까지 한 흐름으로 안내합니다.
목차

OpenCode 세션을 동료에게 보내기 전에 그 링크를 한 사람에게만 전달되는 비공개 초대가 아니라 작은 공개 게시물로 취급하세요. OpenCode 공식 문서는 공유된 대화를 링크를 가진 누구나 볼 수 있다고 설명합니다. 대부분의 팀에는 전체 세션을 검토한 뒤 manual로 공유하고 협업이 끝나면 바로 /unshare하는 방식이 안전합니다. 민감한 프로젝트라면 disabled가 더 적합합니다.
OpenCode 공유 링크에 포함되는 내용
공유되는 것은 동료에게 보여 주고 싶은 마지막 답변만이 아닙니다. OpenCode Share 공식 문서에 따르면 공유 시 고유한 공개 URL을 만들고 대화 기록을 OpenCode 서버에 동기화하며 다음 내용을 링크로 제공합니다.
- 전체 대화 기록
- 모든 메시지와 응답
- 세션 메타데이터
이 말이 로컬 디스크의 전체 저장소가 자동으로 공개된다는 뜻은 아닙니다. 다만 소스 코드, 설정, 로그, 명령 출력, 파일 내용이 메시지나 응답에 한 번이라도 들어갔다면 공유 기록의 일부가 됩니다. 표준 링크는 보낸 동료의 계정에 묶여 있지도 않습니다. URL을 얻은 누구나 열 수 있습니다.
공유 세션은 사용자가 명시적으로 해제할 때까지 접근 가능한 상태로 남습니다. 마지막 몇 개 메시지만 검토하거나 추측하기 어려워 보이는 URL을 접근 제어로 생각하지 마세요.
manual, auto, disabled 중 무엇을 선택할까
일반적인 업무에서는 manual과 disabled 중 하나를 선택하세요. auto는 모든 새 대화를 사람이 검토하기 전에 자동 공개해도 되는 경우에만 사용합니다.
| 모드 | 동작 | 적합한 상황 | 주요 위험 |
|---|---|---|---|
manual | 기본값이며 /share를 실행할 때만 링크 생성 | 검토한 세션을 가끔 협업에 사용 | 검토자가 놓칠 수 있지만 새 세션이 자동 공개되지는 않음 |
auto | 모든 새 대화를 자동으로 공유하고 링크 생성 | 의도적으로 공개하는 작업 흐름 | 비밀정보, 코드, 로그가 검토 전에 공개될 수 있음 |
disabled | 공유 기능을 완전히 끔 | 비공개 저장소, 고객 데이터, 규제 업무, 공개 링크가 필요 없는 팀 | 표준 공유 링크 대신 다른 통제된 협업 수단이 필요 |
판단 기준은 단순합니다. 검토한 세션을 필요할 때만 보여 주려면 manual, 프로젝트가 민감하거나 공개 링크가 필요 없거나 팀이 매번 안정적으로 검토하기 어렵다면 disabled를 선택하세요. /share 입력 한 번을 줄이려고 비공개 프로젝트에 auto를 켜서는 안 됩니다.
공유 전에 전체 세션을 검토하세요
첫 메시지부터 마지막 메시지까지 읽으세요. 공개 페이지에는 전체 기록이 포함되므로 팀 채팅에 붙여 넣을 부분만 정리해서는 충분하지 않습니다. 원래 세션 어디에든 민감한 내용이 남아 있다면 그 세션을 공유하지 마세요.
1. 자격 증명과 인증 정보
API 키, 액세스 토큰, 비밀번호, 개인 키, 쿠키, 세션 토큰, Authorization 헤더, 데이터베이스 연결 문자열, 서명된 URL, .env의 실제 값을 찾으세요. 변수 이름이나 안전한 자리표시자는 괜찮을 수 있지만 실제로 동작하는 값은 공개하면 안 됩니다.
자격 증명이 기록에 들어갔고 제거되었는지 확인할 수 없다면 해당 자격 증명을 폐기하거나 교체하고, 비밀정보가 없는 새 세션을 만든 뒤 새 세션만 공유하세요.
2. 독점 코드와 업무 맥락
모델이 읽거나 만든 소스 파일, 패치, 설정, SQL, 아키텍처 설명, 고객 이름, 내부 요구사항, 미출시 기능을 확인하세요. 각각은 무해해 보여도 여러 조각을 합치면 시스템 구조, 업무 로직, 보안 경계가 드러날 수 있습니다.
3. 로그와 명령 출력
로그와 오류에는 로컬 경로, 사용자 이름, 이메일, 호스트명, 내부 도메인, IP 주소, 저장소와 브랜치 이름, 티켓 번호, 데이터베이스 이름, 요청 매개변수가 자주 포함됩니다. token과 password만 검색하지 말고 스택 트레이스, 테스트 결과, CI 로그, git diff, curl 명령, 터미널 출력도 살펴보세요.
4. 세션 메타데이터와 식별 가능한 맥락
OpenCode는 세션 메타데이터도 공유 범위에 포함한다고 명시합니다. 프로젝트명, 세션명, 브랜치, 파일 경로 등 조직이나 내부 시스템을 알아낼 수 있는 정보를 확인하세요.
5. 확실히 정리할 수 없다면 새 세션을 만드세요
공개 문서는 자동 비식별화를 약속하지 않습니다. OpenCode가 자격 증명을 알아서 가릴 것이라고 가정하지 말고, 무엇이 보이는지 확인하려고 먼저 공유하지도 마세요. 협업에 필요한 최소 코드, 오류, 맥락만 새 대화에 다시 구성하는 편이 긴 기록에 민감정보가 없음을 증명하려는 것보다 안전합니다.
manual 모드에서 안전하게 공유하는 절차
manual은 기본값이며 “검토 후 공개” 흐름에 가장 잘 맞습니다.
1단계: 최종 share 설정을 확인하세요
OpenCode는 여러 위치의 설정을 병합하며 같은 키가 충돌하면 나중에 로드된 값이 앞의 값을 덮어씁니다. 전역 설정은 보통 ~/.config/opencode/opencode.json, 프로젝트 설정은 저장소 루트의 opencode.json에 있습니다. 다음을 실행하세요.
opencode debug config
해석된 설정에서 share가 실제로 manual인지, 다른 설정의 auto가 적용되지 않았는지 확인하세요. 위치와 우선순위는 OpenCode Config 공식 문서에서 볼 수 있습니다.
수동 공유를 명시하려면 적절한 opencode.json에 다음을 추가합니다.
{
"$schema": "https://opencode.ai/config.json",
"share": "manual"
}
2단계: 개인정보 검토를 마치세요
위 점검 목록을 전체 기록에 적용하세요. 공개할 수 없는 자격 증명, 독점 코드, 기밀 로그, 식별 정보가 하나라도 남았다면 중단합니다. 협업이 계속 필요하면 최소 정보만 담은 새 세션을 만드세요.
3단계: 검토한 세션에서 /share를 실행하세요
/share
공식 문서에 따르면 이 명령은 고유 URL을 만들고 클립보드에 복사합니다. 바로 전달하지 말고 먼저 공개 페이지로 검토하세요.
4단계: 받는 사람의 관점에서 링크를 확인하세요
로그아웃한 브라우저나 시크릿 창에서 URL을 열고 처음부터 끝까지 읽으세요. 초기 메시지와 긴 로그를 포함해 링크를 얻은 누구에게 보여도 되는 내용만 있는지 확인합니다.
이 과정은 공개 전 확인일 뿐 새로운 권한 계층이 아닙니다. 시크릿 창에서 보더라도 표준 링크가 비공개로 바뀌지는 않습니다.
5단계: 통제된 채널로 보내고 해제 시점을 정하세요
실제로 필요한 팀 채널에만 URL을 보내고 재전달하지 말아 달라고 알리세요. 이 요청은 우발적 확산을 줄이지만 링크를 기술적으로 특정 수신자에게만 묶지는 못합니다. 버그가 해결될 때, 검토가 끝날 때, 또는 정해진 시간이 지날 때처럼 공유하는 시점에 해제 조건을 정하세요.
민감한 프로젝트에서 공유를 완전히 끄는 방법
고객 데이터, 운영 자격 증명, 독점 코드가 있거나 공개 세션 링크가 필요하지 않다면 모든 구성원이 매번 검토 절차를 기억하는 것보다 disabled가 더 안전합니다.
프로젝트 루트의 opencode.json에 추가하고 Git에 커밋하세요.
{
"$schema": "https://opencode.ai/config.json",
"share": "disabled"
}
공식 Share 문서는 팀에 이 선택을 적용할 때 프로젝트 설정을 권장합니다. 설정은 병합되므로 변경 후에도 opencode debug config로 최종값을 확인하세요. 특히 inline 설정이나 관리자 설정이 프로젝트 값을 덮어쓸 수 있습니다.
일반 사용자가 바꿀 수 없는 조직 정책에는 관리자가 managed settings를 사용해야 합니다. 현재 Config 문서는 macOS의 /Library/Application Support/opencode/, Linux의 /etc/opencode/, Windows의 %ProgramData%\opencode를 시스템 경로로 안내합니다. managed settings는 사용자 및 프로젝트 파일보다 우선순위가 높습니다. Enterprise 환경에서는 SSO 인증 사용자로 제한하거나 공유 기능을 자체 호스팅할 수도 있습니다.
이미 공유한 링크를 해제하는 방법
해제는 명시적인 정리 단계입니다. 터미널을 닫거나 URL을 보낸 채팅 메시지를 지우거나 클립보드를 비워도 이미 공개된 세션은 해제되지 않습니다.
1단계: 원래 세션으로 돌아가 /unshare를 실행하세요
/unshare
OpenCode 문서는 이 명령이 공개 접근과 공유 링크를 제거하고 공유 대화와 관련된 데이터를 삭제한다고 설명합니다.
2단계: 오래된 URL을 외부에서 검증하세요
원래 URL을 보관하고 로그아웃한 창이나 다른 브라우저에서 다시 여세요. 의미 있는 성공 신호는 명령이 눈에 띄는 오류 없이 끝나는 것이 아니라 오래된 링크가 더 이상 공유 대화를 표시하지 않는 것입니다. 아직 열리면 올바른 세션을 해제했는지와 클라이언트 상태를 확인하세요.
3단계: 검증에 실패하면 링크를 계속 공개 상태로 취급하세요
현재 공개 Share 페이지는 원래 대화에서 /unshare하는 절차를 설명하며 별도의 공개 링크 관리 대시보드는 제시하지 않습니다. 원래 세션을 열 수 없거나 명령을 사용할 수 없거나 오래된 URL이 계속 내용을 보여 준다면 해제되었다고 팀에 알리지 마세요. 외부 접근이 사라졌음을 확인할 때까지 URL을 공개 상태로 보고 OpenCode 관리자나 지원팀에 문의하세요.
/unshare로 되돌릴 수 없는 것
/unshare는 OpenCode가 오래된 URL로 공유 대화를 계속 제공하는 것을 중단합니다. 하지만 수신자가 이미 본 정보, 저장한 스크린샷, 복사한 코드, 내려받은 로그를 회수할 수는 없습니다.
공식 페이지는 공유 관련 데이터 삭제를 설명하지만 제3자 캐시, 브라우저 사본, 수신자가 만든 보관본까지 지운다고 약속하지는 않습니다. 해제는 필요한 정리 작업이지 공유 전 검토를 대체하지 않습니다. 실제 자격 증명이 노출됐다면 /unshare와 별개로 그 자격 증명도 폐기하거나 교체하세요.
자주 묻는 질문
로컬 저장소 전체가 공개되나요?
문서는 전체 대화 기록, 메시지, 응답, 세션 메타데이터를 언급하며 모든 로컬 파일이 자동 공개된다고 하지는 않습니다. 그러나 대화에 들어간 코드, 파일 내용, 패치, 로그는 공유 내용으로 취급해야 합니다.
한 명의 동료에게만 허용할 수 있나요?
표준 Share는 URL을 가진 누구나 접근하는 공개 링크로 설명되며 이메일별 허용 목록은 아닙니다. 신원 제한이 필요한 조직은 SSO 전용 접근이나 자체 호스팅 같은 Enterprise 옵션을 검토해야 합니다.
/share를 실행하지 않았는데 링크가 생긴 이유는 무엇인가요?
최종 설정의 share가 auto인지 확인하세요. opencode debug config를 실행해 전역, 프로젝트, inline, managed 중 어느 설정이 최종값을 만들었는지 찾습니다.
/share를 사용할 수 없으면 어떻게 하나요?
최종값이 disabled인지, managed policy로 고정되었는지 확인하세요. 우선순위가 낮은 파일로 팀 정책을 우회하지 말고 관리자에게 허용된 협업 방식을 문의하세요.
링크를 보내기 전 최종 점검
보내기 전에 다음을 확인하세요.
- 최종 모드가
manual이거나 프로젝트가 의도적으로disabled이다 - 첫 메시지부터 전체 기록을 검토했다
- 실제 자격 증명, 내부 URL, 독점 코드, 고객 데이터, 민감한 로그가 남지 않았다
- 로그아웃한 창에서 공개 페이지를 확인했다
- 누가 필요로 하는지, 어느 채널로 보낼지, 언제 해제할지 정했다
- 협업 후 원래 세션에서
/unshare를 실행하고 오래된 URL을 다시 확인한다
세션 공유를 일반 채팅 첨부가 아니라 공개로 생각하면 링크가 손을 떠나기 전에 중요한 개인정보 위험을 훨씬 쉽게 발견할 수 있습니다.