Files
gravity_control/docs/devlog/entries/20260309-007.md

2.0 KiB

CSP script-src 'unsafe-inline' 패치 — 렌더러 v3 스크립트 미실행 근본 원인

  • 시작: 2026-03-09 20:04 KST
  • 종료: 2026-03-09 20:28 KST
  • 상태: 🔧 미완료 (AG 재시작 후 /deep-inspect 검증 필요)
  • Vikunja: #264 → 진행중

핵심 발견

Root cause: CSP script-src'unsafe-inline' 없음

이전 세션(#005~#006)에서 HTML 패치 + 체크섬 + CachedData 삭제 모두 정상이었으나 renderer v3 스크립트가 미실행되는 근본 원인 발견.

CSP 분석:

script-src 'self' 'unsafe-eval' blob:   ← 'unsafe-inline' 없음!
style-src 'self' 'unsafe-inline'         ← 스타일은 허용 (함정)
  • <script src="./x.js">'self'로 허용되나 vscode-file://가 커스텀 파일 서빙 차단
  • <script>inline code</script>'unsafe-inline' 없어 CSP가 무조건 차단
  • 두 방법 모두 차단 → deadlock이었음

추가 검증

  • require-trusted-types-for 'script' → static <script> 태그에 영향 없음 (확인)
  • 스크립트 내 innerHTML/document.write/eval → 0건 (Trusted Types 충돌 없음)
  • connect-srchttp://127.0.0.1:* → Bridge HTTP 통신은 CSP 허용 범위

이전 세션 KI와의 관계

  • KI renderer_security_and_lifecycle.md Line 28: "인라인 스크립트로 우회" → 해결책으로 기록
  • 그러나 인라인도 CSP가 차단한다는 분석이 누락 → 이번에 최초 발견

수정 내역

파일 변경
extension/src/extension.ts setupApprovalObserver()에 CSP 'unsafe-inline' 자동 패치 로직 추가
.agents/references/known-issues.md CSP script-src 이슈 + 핵심 전제에 CSP 패치 필수 추가
양쪽 HTML (수동) 'unsafe-inline' 추가 + 체크섬 업데이트 + CachedData 삭제

다음 단계 (다음 세션)

  1. AG 완전 재시작
  2. curl.exe http://127.0.0.1:34332/deep-inspect → 렌더러 응답 확인
  3. 응답 시 webview iframe 접근성 분석 → E2E 승인 테스트