BugShot 개인정보처리방침
시행일: 2026년 7월 4일
BugShot(이하 "확장 프로그램")은 사용자의 개인정보를 소중히 여기며, 최소한의 정보만 수집·처리합니다. 본 방침은 확장 프로그램이 어떤 정보를 다루는지 투명하게 안내합니다.
1. 수집하는 정보
플랫폼 자격 증명 및 사용자 정보
| 정보 | 수집 시점 | 목적 |
|---|---|---|
| Jira 자격 증명 (API Token 또는 OAuth 토큰) | Jira 연동 설정 시 | 이슈 생성 및 첨부 |
| Jira 사용자 이메일 | 연동 검증 시 | 연동 상태 표시 |
| GitHub 자격 증명 (PAT 또는 OAuth 토큰) | GitHub 연동 설정 시 | 이슈 생성 및 파일 업로드 |
| GitHub 사용자 ID | 연동 검증 시 | 연동 상태 표시 |
| Linear 자격 증명 (API Key 또는 OAuth 토큰) | Linear 연동 설정 시 | 이슈 생성 및 첨부 |
| Linear 사용자 이름·이메일 | 연동 검증 시 | 연동 상태 표시 |
| Notion 자격 증명 (Internal Integration Token 또는 OAuth 토큰) | Notion 연동 설정 시 | 페이지 생성 및 첨부 |
| Notion 워크스페이스 정보 | 연동 검증 시 | 연동 상태 표시 |
| GitLab 자격 증명 (Personal Access Token 또는 OAuth 토큰) | GitLab 연동 설정 시 | 이슈 생성 및 파일 업로드 |
| GitLab 사용자 이름·이메일 및 인스턴스 URL | 연동 검증 시 | 연동 상태 표시 (self-managed 인스턴스 주소 포함) |
| Asana 자격 증명 (Personal Access Token 또는 OAuth 토큰) | Asana 연동 설정 시 | 작업(task) 생성 및 파일 업로드 |
| Asana 사용자 이름·이메일 | 연동 검증 시 | 연동 상태 표시 |
| ClickUp 자격 증명 (Personal API Token 또는 OAuth 토큰) | ClickUp 연동 설정 시 | 작업(task) 생성 및 파일 업로드 |
| ClickUp 사용자 이름·이메일 | 연동 검증 시 | 연동 상태 표시 |
| Slack 자격 증명 (OAuth user token) | Slack 연동 설정 시 | 채널/DM 메시지 전송 및 파일 업로드 |
| Slack 사용자 이름·워크스페이스(team) 정보 | 연동 검증 시 | 연동 상태 표시 |
담당자·CC(참조)·멘션 대상
담당자·CC(참조)·Slack 멘션 등 사용자를 선택하는 필드를 사용하면 입력한 검색어로 연동된 플랫폼(Jira·GitHub·Linear·Notion·GitLab·Asana·ClickUp·Slack)의 사용자 디렉터리를 조회해 후보(이름·핸들·아바타·이메일)를 표시합니다. 이미 선택된 사용자를 목록 상단에 표시하기 위해 해당 사용자의 프로필(이름·아바타·이메일)을 추가로 조회할 수 있습니다. 사용자가 선택한 대상의 식별자는 생성되는 이슈 본문(또는 Slack 메시지)에 포함되어 해당 플랫폼으로 전송됩니다. 검색어와 조회된 후보·프로필 목록은 기기에 저장되지 않습니다.
페이지 데이터 및 디버그 정보
| 정보 | 수집 시점 | 목적 |
|---|---|---|
| DOM 요소 스타일 정보 | 요소 선택 시 | 스타일 비교 및 이슈 본문 생성 |
| 스크린샷·탭 영상 | 캡처/탭 녹화 시 | 현재 탭 화면을 캡처해 이슈 첨부 |
| 에디터 인라인 이미지 | 이슈 본문에 화면 일부 삽입 시 | 현재 탭 화면을 캡처(captureVisibleTab)해 선택 영역만 잘라 본문에 삽입 |
| 화면 녹화 영상 | 화면 녹화 모드 선택 시 | 브라우저 화면 공유 다이얼로그로 사용자가 직접 선택한 대상(전체 화면·다른 앱 창·다른 탭 등 BugShot이 열린 탭 밖 화면도 포함될 수 있음)을 녹화해 이슈 첨부 |
| 네트워크 요청 로그 | 디버그 캡처 활성화 시 | 이슈 첨부 (디버그 정보) |
| WebSocket 메시지 (텍스트 프레임 본문) | 디버그 캡처 활성화 시 | 이슈 첨부 (디버그 정보 — 송수신 텍스트 메시지, 바이너리 제외) |
| 콘솔 로그 | 디버그 캡처 활성화 시 | 이슈 첨부 (디버그 정보) |
| 사용자 액션 로그 (클릭·입력·페이지 이동·단축키 입력·토글·드롭다운 선택·드래그) | 디버그 캡처 활성화 시 | 이슈 첨부 (재현 단계 — 영상 모드에 한해 첨부) |
| 30초 리플레이 프레임 | 30초 리플레이 활성화 시 | 현재 탭 화면을 주기적으로 캡처해 직전 30초를 메모리에 임시 보관 (미저장·미전송, 사용자가 명시적으로 캡처할 때만 영상으로 첨부) |
| 사용자 첨부 파일 | 파일 첨부 기능 활성화 후 이슈에 파일 첨부 시 (선택 기능, 기본 꺼짐) | 사용자가 직접 선택한 임의의 로컬 파일을 이슈에 첨부 |
네트워크 로그 수집 시 authorization, cookie 등 민감 헤더와 token, access_token 등 민감 쿼리 파라미터는 자동으로 마스킹 처리됩니다. 요청·응답 본문(JSON·폼 데이터)에 포함된 token, password, secret 등 민감 키의 값도 자동으로 마스킹됩니다. 페이지가 WebSocket으로 주고받는 실시간 메시지의 경우 텍스트 프레임 본문만 수집되며(이미지·파일 등 바이너리 프레임은 수집하지 않음), 위와 동일한 본문 마스킹이 적용됩니다. 콘솔 로그는 페이지가 출력한 메시지를 원문 그대로 수집하므로(별도 마스킹 없음), 민감 정보를 콘솔에 출력하는 페이지에서는 디버그 캡처 시 유의하시기 바랍니다.
디버그 캡처 시 콘솔·네트워크 로그는 현재 페이지 본문뿐 아니라 그 페이지에 삽입된 다른 출처(third-party) 프레임(iframe — 예: 결제 위젯, 임베드 SDK)에서 발생한 콘솔·네트워크 로그도 함께 수집할 수 있습니다. 이는 해당 프레임에서 일어나는 오류가 버그 재현에 필요하기 때문이며, 수집된 로그에는 출처(origin) 정보가 함께 기록되어 이슈 첨부 시 출처별로 구분·필터할 수 있습니다. 위 민감 헤더·파라미터·본문 마스킹은 프레임 출처와 무관하게 동일하게 적용됩니다.
요소 선택·스타일 편집과 요소 캡처도 페이지에 직접 삽입된 다른 출처(cross-origin) 프레임(iframe — 결제 위젯·임베드 등) 내부 요소로 확장됩니다. 해당 프레임 안의 요소를 선택하면 그 요소의 선택자·스타일 정보·텍스트를 수집하고, 프레임 출처(origin)를 함께 기록해 이슈의 스타일 변경 목록에 표시합니다. iframe 내부 요소를 캡처하면(현재 탭 화면을 캡처해 해당 요소 영역만 잘라내는 방식) 그 프레임의 화면 내용이 스크린샷에 포함될 수 있습니다. 프레임 안에 또 프레임이 겹쳐 있거나(중첩) 보안 정책(sandbox)으로 막힌 프레임은 내부에 접근하지 않습니다.
사용자 액션 로그는 클릭한 요소·입력 필드·페이지 이동에 더해, 단축키·특수키 입력(예: Enter·Esc·⌘K — 인쇄 문자와 입력 필드 값 자체는 기록하지 않습니다), 체크박스·라디오 토글, 드롭다운 선택, 요소를 끌어다 놓는 드래그 동작(끈 요소와 놓은 위치 요소의 식별 정보)을 재현 단계로 기록합니다. 드래그도 기존 클릭과 동일하게 요소의 접근성 이름·선택자만 담으며 새로운 민감 정보를 수집하지 않습니다. 비밀번호·카드번호 등 민감 입력 필드(type=password, autocomplete 힌트, 필드 이름·라벨의 민감 키워드로 판별)의 입력 값은 자동으로 마스킹 처리되며, 해당 민감 필드에 포커스된 동안의 키 입력은 아예 기록하지 않아 원문이 기기를 벗어나지 않습니다.
화면 녹화 중에는 페이지를 이동(다른 사이트로의 이동 포함)하더라도 그동안의 콘솔·네트워크·액션 로그가 끊기지 않고 함께 보존되어, 해당 녹화로 만든 이슈에는 녹화 중 방문한 페이지들의 디버그 로그가 포함될 수 있습니다.
디버그 캡처를 한 번 시작한 적 있는 페이지를 다시 로드하면, 캡처를 재개하는 시점에 해당 페이지 로드 초반(재개 직전)의 콘솔·네트워크·액션 로그도 소급해 함께 포함될 수 있습니다. 이 로드 초반 로그는 캡처를 다시 시작하기 전까지는 기기 메모리에만 임시 보관되며 저장·전송되지 않습니다.
앱 설정
| 정보 | 수집 시점 | 목적 |
|---|---|---|
| LLM 프로바이더 설정 (base URL, API 키, 모델) | AI 초안 기능 설정 시 | LLM API 호출 |
LLM API 키는 난독화하여 저장됩니다.
Chrome 내장 AI(Prompt API)를 지원하는 브라우저에서는 외부 API 호출 없이 온디바이스 모델로 초안을 생성할 수 있습니다. 이 경우 데이터가 사용자의 기기를 벗어나지 않으며, 별도의 API 키가 필요하지 않습니다.
익명 사용량 집계
확장 프로그램은 제품 개선을 위해 익명 집계 이벤트를 수집합니다(2026년 6월 19일 시행).
| 정보 | 수집 시점 | 목적 |
|---|---|---|
| 설치(extension_installed, 확장 버전) | 신규 설치 시 | 설치 규모·버전 분포 파악 |
| 사이드 패널 열기(sidepanel_opened) | 사이드 패널을 열 때 | 활성화 정도 파악 |
| 플랫폼 연결(platform_connect: 플랫폼·성공/취소/실패) | OAuth 연결 시도 시 | 연동 플랫폼별 인기도·연결 성공·취소·실패 비율 파악 |
| 플랫폼 연결 해제(platform_disconnected: 플랫폼) | 연결 해제 시 | 연동 이탈 파악 |
| 이슈 제출(issue_submitted: 플랫폼·캡처 모드·제출 결과·리플레이 트림 여부) | 이슈 제출 시 | 플랫폼별 사용량·캡처 방식 우선순위·제출 성공·실패 비율·30초 리플레이 트리밍 사용률 파악 |
이 이벤트들은 위 분류 문자열만 담으며, 이슈 제목·본문·URL·개인 식별 정보는 일절 포함하지 않습니다. 같은 설치를 구분하기 위해 설치 시 무작위 식별자(distinct_id)를 한 번 생성해 기기에 저장하고 이후 이벤트에 함께 보냅니다. 이 식별자는 무작위 값일 뿐 이메일·계정·IP 등 어떤 개인정보와도 연결되지 않습니다. 실제 IP 주소가 저장되지 않도록 이벤트에 IP 값을 0.0.0.0으로 실어 보내고, 위치 추정(GeoIP)도 비활성화하며($geoip_disable), 개인 프로필 생성도 비활성화합니다($process_person_profile: false). 이 집계에는 별도의 옵트아웃(off) 설정이 없습니다.
확장 프로그램은 위 항목 외에 사용자의 브라우징 기록, 쿠키, 개인 식별 정보 등을 수집하지 않습니다.
2. 정보 저장
모든 데이터는 사용자의 브라우저 내부에만 저장됩니다.
- chrome.storage.local: Jira·GitHub·Linear·Notion·GitLab·Asana·ClickUp·Slack 연동 설정, 이슈 기록, 앱 설정, LLM 프로바이더 설정 (API 키는 난독화 저장)
- chrome.storage.session: 편집 세션 (탭별, 브라우저 종료 시 자동 삭제)
- IndexedDB: 영상 녹화 파일, 스크린샷 이미지, 네트워크 로그, 콘솔 로그, 사용자 액션 로그, 에디터 인라인 이미지, 사용자 첨부 파일 (로컬 기기 한정)
- 메모리(임시): 30초 리플레이 프레임 버퍼 — 디스크에 저장되지 않으며, 사용자가 캡처를 실행하는 시점에만 영상으로 인코딩되어 IndexedDB에 저장됩니다.
외부 서버에 사용자 데이터를 저장하지 않습니다.
3. 외부 전송
확장 프로그램은 아래 서비스에만 데이터를 전송합니다.
| 대상 | 전송 내용 | 목적 |
|---|---|---|
Jira REST API (*.atlassian.net, api.atlassian.com) | 이슈 본문, 스크린샷, 영상, 디버그 로그 | 이슈 생성 및 첨부 |
GitHub REST API (api.github.com) | 이슈 본문, 라벨, 담당자 | 이슈 생성 |
GitHub (api.github.com, github.com, 및 GitHub가 발급한 업로드 URL[AWS S3]) | 스크린샷, 영상, 디버그 로그 | 파일 업로드 |
Linear GraphQL API (api.linear.app, 첨부 파일은 Linear가 발급한 업로드 URL) | 이슈 본문, 스크린샷, 영상, 디버그 로그 | 이슈 생성 및 첨부 |
Notion REST API (api.notion.com) | 페이지 본문, 스크린샷, 영상, 디버그 로그 | 페이지 생성 및 첨부 |
GitLab REST API (gitlab.com 또는 사용자 지정 self-managed 인스턴스) | 이슈 본문, 라벨, 담당자, 스크린샷, 영상, 디버그 로그 | 이슈 생성 및 파일 업로드 |
Asana REST API (app.asana.com) | 작업(task) 본문, 워크스페이스·프로젝트·담당자, 스크린샷, 영상, 디버그 로그 | 작업 생성 및 파일 업로드 |
ClickUp REST API (api.clickup.com) | 작업(task) 본문, 워크스페이스·스페이스·리스트·담당자, 스크린샷, 영상, 디버그 로그 | 작업 생성 및 파일 업로드 |
Slack Web API (slack.com 및 Slack이 발급한 파일 업로드 URL) | 메시지 본문(제목·상세), 멘션 대상, 스크린샷, 영상, 디버그 로그, 승격 시 트래커 이슈 링크 | 사용자 본인 워크스페이스의 채널/DM에 메시지·첨부 전송 및 트래커 승격 시 원 메시지 스레드에 이슈 링크 자동 댓글 |
| OAuth 프록시 서버 | OAuth 인가 코드 | 토큰 교환 (Jira, GitHub, Notion, Asana, ClickUp, Slack) |
| 사용자 지정 LLM 프로바이더 | 이슈 본문 초안, 스크린샷 (선택적), 디버그 로그 요약 (선택적) | AI 초안 생성 |
PostHog (us.i.posthog.com) | 익명 집계 이벤트 (설치·패널 열기·플랫폼 연결/해제·이슈 제출) | 익명 사용량 집계 |
OAuth 프록시 서버는 토큰 교환만 중계하며, 사용자 데이터를 저장하거나 로깅하지 않습니다. Linear·GitLab은 PKCE 방식으로 프록시 없이 직접 토큰을 교환합니다.
사용자가 "파일 첨부" 기능으로 직접 선택한 로컬 파일은 이슈(작업) 제출 시 위 각 플랫폼(Jira·GitHub·Linear·Notion·GitLab·Asana·ClickUp)에 본문 첨부로, Slack의 경우 메시지 스레드에 함께 업로드됩니다. 이 기능은 기본적으로 꺼져 있으며, 설정에서 활성화한 경우에만 동작합니다.
GitLab self-managed 인스턴스에 PAT로 연결할 경우, 사용자가 입력한 인스턴스 주소(임의 origin)로 직접 통신합니다. 이 접근은 설치 시 부여되는 필수 광역 호스트 권한(<all_urls>)으로 커버되어 별도의 권한 요청 대화상자 없이 동작합니다.
LLM 프로바이더는 사용자가 직접 설정한 엔드포인트로만 전송되며, 사용자가 AI 초안 생성을 명시적으로 실행할 때에만 동작합니다. 해당 호스트 접근은 필수 광역 호스트 권한(<all_urls>)으로 커버됩니다.
CC(참조) 멘션 검색 시 입력한 검색어는 위 각 플랫폼의 사용자 검색 API로 전송되며, 사용자가 선택한 멘션 대상은 이슈 본문의 일부로 함께 전송됩니다. 모두 사용자가 직접 검색·선택할 때에만 동작합니다.
4. 제3자 공유
수집한 정보를 제3자에게 판매, 공유, 전달하지 않습니다. 사용자가 직접 이슈를 생성하거나 AI 초안을 요청하는 경우에만 해당 플랫폼 또는 사용자가 설정한 LLM 프로바이더로 데이터가 전송됩니다.
5. 데이터 삭제
- 확장 프로그램 제거:
chrome.storage데이터가 자동으로 삭제됩니다. - 미디어·로그 데이터: 브라우저 설정에서 사이트 데이터를 초기화하거나, 확장 프로그램 내 이슈 목록에서 개별 삭제할 수 있습니다.
- 플랫폼 연동 해제: 각 플랫폼(Jira, GitHub, Linear, Notion, GitLab, Asana, ClickUp, Slack) 연동 탭에서 연결을 해제하면 저장된 자격 증명이 삭제됩니다.
- LLM 프로바이더 삭제: 설정에서 프로바이더 연결을 해제하면 저장된 설정이 삭제됩니다.
6. 권한 사용 안내
확장 프로그램 권한
| 권한 | 사용 목적 |
|---|---|
| sidePanel | 사이드 패널 UI 표시 |
| activeTab | 현재 탭의 DOM 요소 정보 수집 |
| scripting | DOM 선택·오버레이 표시를 위한 스크립트 주입, GitHub 파일 업로드를 위한 페이지 스크립트 실행 |
| storage | 설정·세션·이슈 기록 저장 |
| commands | 키보드 단축키 등록 |
| contextMenus | 우클릭 메뉴에서 사이드 패널 열기 |
| identity | OAuth 로그인 (Jira, GitHub, Linear, Notion, GitLab, Asana, ClickUp, Slack) |
| tabCapture | 탭 영상 녹화 |
| webNavigation | 페이지 이동 직전 콘솔·네트워크 로그 꼬리 보존, 새로 로드된 프레임(iframe) 감지 시 로그 수집 연결 (탭·프레임 이동 감지) |
호스트 권한
확장 프로그램의 호스트 권한은 <all_urls> 한 가지입니다.
<all_urls>(모든 사이트) — 임의 웹페이지에서 DOM 선택·화면 캡처(captureVisibleTab)·콘솔/네트워크 로그 수집을 수행하고, 사용자가 설정한 LLM 프로바이더·GitLab self-managed 인스턴스, 그리고 연결한 이슈 트래커·Slack의 API 서버 및 OAuth 프록시와 통신하기 위한 필수 권한입니다. 설치 시 부여되며, 설치 화면에 "모든 사이트의 데이터 읽기/변경"으로 표시됩니다.
별도의 플랫폼별 호스트 권한은 두지 않으며, 위의 모든 통신은 <all_urls> 권한으로 이뤄집니다. 데이터가 실제로 전송되는 외부 대상(각 플랫폼 API 서버·OAuth 프록시 등)은 "3. 외부 전송" 항목을 참고하세요.
광역 호스트 권한 (<all_urls>) 사용처
<all_urls> (모든 사이트)는 설치 시 부여되는 필수 권한입니다(설치 화면에 "모든 사이트의 데이터 읽기/변경"으로 표시). 임의 웹페이지를 대상으로 동작하는 확장의 핵심 기능에 필요하며, 별도의 런타임 권한 요청 대화상자는 없습니다. 주요 사용처:
- DOM 선택·스타일 수정: 임의 웹페이지의 요소를 골라 정보를 수집하고 스타일을 미리보기
- 화면 캡처·30초 리플레이: 현재 탭 화면 캡처(
captureVisibleTab)는 일반 호스트 권한으로는 동작하지 않고<all_urls>를 요구합니다. 다른 사이트로 이동해도 사이드 패널이 닫히지 않고 캡처·로그 수집이 이어집니다. - 콘솔·네트워크 로그 수집: 임의 페이지(및 iframe)에서 로그 기록
- AI 초안: 사용자가 직접 설정한 LLM 프로바이더 엔드포인트로 전송 (AI 초안을 명시적으로 실행할 때)
- GitLab self-managed: 사용자가 입력한 인스턴스(임의 origin)로 PAT 통신
- 스타일 값 보강: 선택한 요소의 '지정된(author)' 스타일을 정확히 표시하기 위해, 페이지가 참조하는 외부 스타일시트(cross-origin CSS 파일)를 백그라운드에서 자격 증명 없이(
credentials:omit) 읽어옵니다. 공개 http(s) 호스트만 대상이며(loopback·내부망·사설 IP는 차단), 받은 CSS는 기기 내에서만 사용되고 제3자로 전송하지 않습니다.
각 기능은 사용자가 직접 켜거나 실행할 때만 데이터를 전송합니다. 권한 자체는 설치 시 상시 부여되지만, 사용자는 Chrome 설정(확장 프로그램 > BugShot > 사이트 액세스)에서 접근 범위를 좁힐 수 있습니다.
7. 변경 사항
본 방침이 변경될 경우, 이 페이지를 통해 고지합니다.
8. 문의
개인정보 관련 문의: ox501501@gmail.com