본문으로 건너뛰기

프라이버시 — 텔레메트리 정책

apps-in-toss-community 도구는 텔레메트리를 두 계층으로 분리합니다.

  • Tier 0 (opt-out) — 서버가 파생하는 익명 일일 핑. 어떤 ID도 클라이언트가 보내지 않습니다. 기본값 켜짐이지만 언제든 끌 수 있습니다.
  • Tier 1 (opt-in) — 도구별 세부 이벤트 스트림. 명시적 동의 후에만 전송됩니다.

두 계층 모두 PII(개인 식별 정보)를 수집하지 않습니다.

Tier 0 — 익명 일일 핑 (opt-out)

무엇을 전송하나요

하루 한 번, 도구가 실행될 때 daily_ping 이벤트 하나를 서버로 전송합니다. 서버는 KV dedupe를 통해 같은 날 이미 기록된 신호가 있으면 D1 쓰기를 생략합니다 — 하루 1회만 저장됩니다.

식별자: server-derived, 저장 안 됨

클라이언트는 어떤 ID도 함께 보내지 않습니다. 서버가 요청 수신 시점에 IP + User-Agent + 날짜 + 일별 salt를 sha256해 16자 hex를 만들어 KV dedupe key로만 사용하고, 해시 값 자체는 D1에 저장하지 않습니다. 매일 UTC 자정에 salt가 교체되어 어제의 핑과 오늘의 핑을 연결할 수 없습니다.

저장되는 컬럼

컬럼내용
source도구 식별자 ("devtools", "console-cli", "agent-plugin")
event항상 "daily_ping"
tier0
ts이벤트 타임스탬프 (epoch ms)
countryCloudflare cf.country 2자리 국가 코드
version도구 버전

anon_idmeta 컬럼은 Tier 0에서 사용하지 않습니다.

opt-out 방법

방법적용 범위
환경 변수 AITC_TELEMETRY=off모든 도구, 두 계층 모두 비활성
--no-telemetry 플래그console-cli / agent-plugin, 단일 실행 비활성
devtools 패널 토글devtools, Environment 탭에서 Tier 0/1 모두 제어

opt-out 상태에서는 어떤 네트워크 요청도 전송되지 않습니다.

삭제 요청

server-derived hash는 서버가 연산 즉시 폐기합니다. IP·UA·full hash가 저장되지 않으므로 특정 사용자의 Tier 0 기록을 찾아 삭제하는 것이 기술적으로 불가능합니다. opt-out하면 이후 핑이 즉시 중단됩니다.

Tier 1 — 확장 텔레메트리 (opt-in)

무엇을 전송하나요

도구별 세부 이벤트를 전송합니다. 예: devtools 패널 열기, 탭 전환, 세션 시간. 동의하기 전에는 어떤 이벤트도 전송되지 않습니다.

식별자: anon_id

anon_id는 클라이언트가 처음 동의 시점에 생성하는 무작위 UUID v4입니다.

  • devtools: 브라우저 localStorage __ait_telemetry:anon_id
  • console-cli / agent-plugin: ~/.config/aitcc/telemetry.json

cookie가 아니며 계정 또는 사용자 신원과 연결되지 않습니다.

저장되는 컬럼

Tier 0 컬럼 전부 + 아래 추가:

컬럼내용
anon_id클라이언트 UUID v4
meta이벤트별 JSON (256 bytes 이하)

도구별 이벤트

이벤트도구의미
panel_opendevtools사용자가 패널을 열음
tab_viewdevtools탭 전환. meta.tab 포함
session_durationdevtools페이지 unload 시 누적 패널 사용 시간(ms)
cli_invokedconsole-cliCLI 명령 실행
cli_installconsole-cli패키지 설치 이벤트

동의 흐름

처음 도구를 실행하면 Tier 1 동의 프롬프트가 뜹니다. 이전 버전('2026-05-12')에 동의한 적 있다면 정책 변경('2026-05-18')으로 인해 재동의를 요청합니다.

localStorage 상태 키 (devtools):

의미
__ait_telemetry:consentgranted / denied / 부재
__ait_telemetry:policy_version동의한 정책 버전
__ait_telemetry:anon_id브라우저별 UUID v4

삭제 요청

anon_id에 연결된 모든 이벤트를 즉시 삭제할 수 있습니다.

  1. devtools 패널 Environment 탭 → "데이터 삭제" 버튼, 또는
  2. console-cli: aitcc telemetry delete, 또는
  3. 직접 호출:
curl -X DELETE 'https://t.aitc.dev/e?anon_id=<당신의-anon_id>'

응답: { "ok": true, "deleted": <삭제된 행 수> }

수집 소스 (도구별)

도구패키지Tier 0Tier 1
@ait-co/devtoolsnpm @ait-co/devtools활성활성
@ait-co/console-clinpm @ait-co/console-cli활성활성
agent-pluginClaude Code / Codex 플러그인활성활성
@ait-co/polyfillnpm @ait-co/polyfill자체 client 없음자체 client 없음

@ait-co/polyfill은 자체적으로 네트워크 요청을 보내지 않습니다. devtools가 함께 사용되는 경우, devtools sentinel 신호를 통해 polyfill 로드 여부가 Tier 1 메타데이터에 간접 포함됩니다.

저장 정책

항목내용
보존 기간90일 (매일 UTC 03:00 cron 삭제)
저장소Cloudflare D1 (이벤트) + KV (dedupe / rate limit)
국가 코드cf.country 2자리만. IP 저장 없음
Rate limitIP당 분당 60 요청
IP·UA·full hashTier 0 dedupe 계산 후 즉시 폐기. DB 저장 없음
공개 집계GET https://t.aitc.dev/stats — 날짜별 이벤트 수만 (인증 없음)

절대 수집하지 않는 것

  • IP 주소 (연산 후 즉시 폐기, DB 저장 없음)
  • User-Agent 문자열 (동일)
  • 이름·이메일·전화·계정 식별자 등 개인 식별 정보
  • 모의 호출 인자 또는 사용자가 작성한 코드

외부 참조

변경 이력

날짜내용
2026-05-18single opt-in → multi-tier 재설계 (Tier 0 opt-out daily ping + Tier 1 opt-in 확장 텔레메트리)

커뮤니티 오픈소스 프로젝트입니다.