๐๏ธ ์ธ์์ธ๊ณ์ ์ด๋ ฅ ์์นด์ด๋ธ
์๋ฃ๋ ์ธ์์ธ๊ณ์ยท์ค๊ณ ์กฐ๊ฐ์ ๋ชจ์๋ ์ด๋ ฅ ๋ณด๊ด์. ์ด์ ์์น: ์๋ฃ๋ Phaseยทํ์ ๋ ์ค๊ณ๋ ์ฌ๊ธฐ๋ก ์ฅ๊ธด๋ค. ์ต์ ์์ ์๋๋ ํญ์ ๐ฆ SARA ํตํฉ ์ธ์์ธ๊ณ์ ํ๋. ์ ๋ํ๋ฐฉ์ ์์นด์ด๋ธ๋ฅผ ์ฝ์ ํ์ ์๋ค(ํ์ ์ ์ฐธ๊ณ ๋ง).
์ด์ ๋ฐฉ์ (๊ธฐ๋ณธ ์ค์ )
- ํตํฉ ์ธ์์ธ๊ณ์์ ํญ๋ชฉ์ด ์๋ฃ๋๋ฉด ๊ทธ ์์ ๋ธ๋ก์ ์ด ์์นด์ด๋ธ๋ก ์ด๋(๋งํฌ+์์ฝ) โ ํตํฉ๋ณธ์ 1์์ยท์งํ์ค ์ค์ฌ์ผ๋ก ๊ฐ๋ณ๊ฒ ์ ์ง.
- (์ญ์ ) ํ์๋ ๊ณผ๊ฑฐ ์กฐ๊ฐ ํ์ด์ง๋ ์ฌ์ฉ์ ์๋ ์ญ์ ๋์. ๋ด์ฉ์ ์๋์ ์์ฝ์ผ๋ก ๋จ๊ธด๋ค.
์์นด์ด๋ธ ๋ชฉ๋ก
โ Phase 1 โ ๋จ๋ SARA ํจ๋ (์๋ฃ, 2026-05-26)
C:\dev\tools\vscode_sara ํจ๋ ๋ฐํ์ ์ค์บํด๋ ์์ฑยท๊ฒ์ฆ. ๋ํ/์ธ์
resume/์ปค์คํ
๋๊ตฌ/์ธ๋ถ MCP/ํ์ผ ์
๋ก๋ ๋์. ๊ตฌ๋
OAuth/setup-token ์ธ์ฆ, FastAPI :8770, ํจ๋ ์๋์์(tasks.json + Ctrl+Alt+S). ์๋ณธ: (์ญ์ ) ๐ฆ ์ธ์์ธ๊ณ์ โ SARA Phase 1.
โ Phase 2b โ broker ๊ถํ ๊ฒ์ดํธ (์๋ฃ)
sara/permission_hook.py โ cody-permission-broker(:7777) /permission. ๊ฒ์ดํธ ๋์ = Bash/Write/Edit/MultiEdit/NotebookEdit, ์ฝ๊ธฐ์ ์ฉ ํต๊ณผ. AUTO_ALLOWยทfail-safe deny ๊ฒ์ฆ ์๋ฃ.
โ Phase 2a ์ค๊ณ โ ์๋ ์ธ์ ์ธ๊ณ (ํ์ , 2026-05-26)
3๊ฐ ๋ฉ์ปค๋์ฆ(์์/๋ณต์/์๋์ธ๊ณ) ํ์ . ์ฐ๋ ์ฑ๋ = SARAโcmdboard RDS ์ง์ (SQLAlchemy, BOARD_DB_*), ์๊ณ์น 65%, ์ ๊ท ๋นํ๊ดด ํ
์ด๋ธ sara_continuation, ํ๋ก์ ํธ ์
๋ ํฐ ํฌํจ. ์๋ณธ: (์ญ์ ) ๐ Phase 2a ์ค๊ณ / (์ญ์ ) ๐ฆ ์ธ์์ธ๊ณ์ โ Phase 2a ์ฐฉ์. โ ํ์ฌ ํตํฉ๋ณธ์ Phase 2aยท2a-ext๋ก ์ด์ด์ง.
์์นด์ด๋ธ ๋ชฉ๋ก (2026-05-30 ์ถ๊ฐ โ Phase 2a/2a-ext ์๋ฃ๋ถ + ๋ฉํฐ์์ด์ ํธ 1์ฐจ)
โ Phase 2a ๊ตฌํ โ ์๋ ์ธ์ ์ธ๊ณ (์๋ฃ, 2026-05-27)
sara_continuation(๋ง์ด๊ทธ๋ ์ด์
017) RDS ์ ์ฉ. G1(017 ์์ฑยทpush, 197970a) ยท G5(continuation_manager.py persist/restore/handoff 65%, 8d1d799) ์ฝ๋+๋จ์๊ฒ์ฆ ์๋ฃ. ์ ์ฅ์ = cmdboard RDS ๋จ๋
.
โ Phase 2a-ext โ Webview ์ ํ + ๋ ธ์ ๋น๋๊ธฐํ + UI ์ด์ (์๋ฃ, 2026-05-28~29)
- G2 ๋
ธ์
๋น๋๊ธฐ ํ(
notion_sync_queue018,c01d460) ยท G3 Webview ์ต์คํ ์ ๊ณจ๊ฒฉ(12d9acb) ยท G4 SDK ๋ฉ์ถค/์ธํฐ๋ฝํธ(e517765) ยท G6 UI ์ด์(1010068) + /projects RDS ์ง์ (0e48888) + G6-2 ์ธ์ ์ฌ์ด๋๋ฐ(8e2bfc8) + ๋จ์ถํค Ctrl+Alt+S(ecc2759) + cmd์ฐฝ ์จ๊น(cbccccf) + G6-3 ์ธ์ ์ ๋ชฉ ์๋์์ฝ(61b0464). - G7 ํ๋ก์ ํธ์ฐ๊ฒฐ/๋
ธ์
๋งํฌ/ํํฐ(
cbedc15ยทc9cf67d) ยท G8 Tailscale ์๊ฒฉ + CSP ๋์ ํ(d23bb20) ยท G9 ์ปจํ ์คํธ ์ธก์ (4c7dfa0) ยท G10 ๋์๋ต๋ณ ์ฐจ๋จ(1799caa) ยท G11 ๋ฉ์์ง ์ ์ฅ/๋ณต์(ecbd6b9). - G12 ๋
ธ์
์บ์ ์ธ์์ธ๊ณ์ B-1(019,
a640c0b) ยท g13 ๋ฉ์์ง ํธ์ง/์ฌ์์ฑ(e4df320) ยท aws-api stdio ๋ฑ๋ก(656c858) ยท g15 ์ฒซํ๋ฉด ๋ณต์ ๊ฒฐ์ ์ ์ ๋ ฌ(f17fa92) ยท SARA UI ํซํฝ์ค(8c75146).
โ broker ๊ถํ ๊ฒ์ดํธ ๋ณด๊ฐ (์๋ฃ, 2026-05-27~29)
master/main ์ผ๋ฐ push ์๋ํ์ฉ ํซํฝ์ค(9cacf78) ยท force pushยทgit reset --hard ํ
๋ ๊ทธ๋จ ์น์ธ ๊ฒ์ดํธ(risk_approvals, e0ffcba) ยท aws-api call_aws ๋ถ๋ฅ(์ญ์ ยท์ข
๋ฃ=ํ
๋ ๊ทธ๋จ / SGยทIAM ์ ์ฑ
=์ฐจ๋จ / ์ฝ๊ธฐ=ํ์ฉ, 689d366).
โ agent-dialogue-hub โ ์ฑํฐโGPT ์๋ ํ์ SW (์๋ฃ, 2026-05-29~30)
์ ๊ท ํ๋ธ C:\dev\tools\agent-dialogue-hub(:8780). ์ฑํฐ(claude-agent-sdk)โGPT(OpenAI API, gpt-5.5) ์๋ ํํ ํ์. PoC H1~H6 + A(ํ๋ก์ ํธ ์
๋ ํฐ ๋์ ํ) + B-1(ํฉ์ ์ข
๋ฃ ์ notion_sync_queue enqueue) + B-2(SARA ์์ปค๊ฐ ํ ์๋น โ ๋
ธ์
child_page ์์ฑ) ์ฝ๋ยท๊ฒ์ฆยทpush ์๋ฃ. ๋ง์ด๊ทธ๋ ์ด์
020. ์ปค๋ฐ hub a49682d ยท SARA 82670c1. ๋ถ๋ด: hub = ํ์ ์์งยทenqueue / SARA(:8770) = ํ ์๋น ์์ปค. (B ์ฑ๊ณต๊ฒฝ๋ก E2E๋ ๋ณธ ํ์ด์ง๊ตฐ ์๋ ์์ฑ์ผ๋ก ์
์ฆ.)
โ ๋ฉํฐ์์ด์ ํธ ํตํฉ ์ํคํ ์ฒ โ ํฉ์ ๋์ถ (์๋ฃ, 2026-05-30, hub session #19)
hub ์๋ ํ์๋ก 4๋ฏธ๊ฒฐ ๊ฒฐ๋ก . ์์ธ = ํ์ ๊ฒฐ๊ณผ ํ์ด์ง + ๋ฉํฐ์์ด์ ํธ ์ธ๋ถ ์์ ยง10. ์์ง: โ ROUTER(chat/task/verify_required 3๋ถ๋ฅ)+EVALUATOR(task์ฑ๋ง) ์ด์, ์ธ๋ถ /chat ์๋ต ๋ถ๋ณยท๋ด๋ถ๊ณ์ฝ๋ง, PLANNER/CODI๋ disabled adapter โก full-dump ์ ์ง, RAG ์ ํ = ์ ์ ์จ AND ์ฌํ์จ ๊ฒ์ดํธ ๋์ ์ถฉ์กฑ ์๋ง โข ์ต์ฐ์ = truncate ์ ๊ฑฐ + ์์ ์ ๋ RDS ์บ์(G2 ํ), ์ฃผ์
์ summary ๊ธฐ๋ณธ, page_id ์งํฉ diff + tombstone โฃ ์คํค๋ง cmdboard ๋จ์ผ์์ , contract vendoring ๋ฒ์ ๊ณ ์ , ํ๋ค์ค vendored copy + commit hash. ์คํ์์ โขโโกโ[์ฐจ๋จํด์ : cmdboard ํ๋ค์ค ์คํ์ผ ๋์กฐ]โโ .
์์นด์ด๋ธ ๋ชฉ๋ก (2026-06-01 ์ถ๊ฐ โ B-1 ํ์ฑํ + diag + โ ์์ ์ง๋จ/๊ตฌํ)
โ
B-1 ๋
ธ์
์บ์ ํ์ฑํยท๊ฒ์ฆ (์๋ฃ, 2026-06-01, daf1c18)
master/origin daf1c18(FF, base fbc6b71). .env NOTION_CHILD_CACHE=1 + ์ฌ๊ธฐ๋(๋ผ์ด๋ธ). ๋ผ์ด๋ธ ์ ๋ถ ํต๊ณผ: sara_notion_cache 6์ ๊ท์ปฌ๋ผ(summary_md/full_md/deleted_at/cache_bytes/estimated_tokens/load_ms) DESCRIBE ยท primary ํ full_md/summary_md+๊ณ์ธก 3ํ๋ ยท refreshโenqueue_child_cacheโ์์ปค cache_child_page pendingโdone(์์ ๋ณธ๋ฌธ ์ค์ ์ฌ) ยท tombstone(deleted_at) ์ค๊ธฐ๋ก. ๋ณ๊ฒฝ ์์ง(์ง์๋ฌธ codi_notion_cache_b1.md): ์ฝ๊ธฐ SELECT 12์ปฌ๋ผ+deleted_at IS NULL, _cache_upsert full_md/summary_md ๊ธฐ๋ก+์ฌ์บ์ ์ deleted_at=NULL, ์์ปค cache_child_page ์ค๊ตฌํ(NOTION_CHILD_CACHE ์ ์ฉ ๊ฒ์ดํธ, NOTION_WRITE_OPS์ ๋
๋ฆฝ), refresh๋ root/primary ์ธ๋ผ์ธ + ๋นprimary ์์๋ง enqueue. ์ฃผ์
์ full ์ ์ง โ summary flip์ B-2(=โ , ๋ฏธ์ฐฉ์).
โ
diag ์ง๋จ ์์คํ
(์๋ฃ, 2026-06-01, 298a80e)
SARA ํด๋ง๋ค ('diag', โฆ) SSE 1ํ ๋ฐํ(๊ด์ธก ์ ์ฉยท๋ฐฑ์๋ ํธํ) + ํจ๋ ์ง๋จ ์์ฝ ๋ฐ + "๐ ์ง๋จ ๋ณต์ฌ" ๋ฒํผ. ๋ผ์ฐํธยท์์์ฌ๋ถยทraw๋๊ตฌยท๋๊ตฌ์์ยทEVALUATORํ์ ยท์ปค๋ฐ์ค๊ฒ์ฆยท์์ยท๊ฒฐ๊ณผhead(๋ง์คํน)๋ฅผ ์ถ์ธก ์์ด ์ฑํฐ์ ์ ๋ฌ. ๋ธ๋์น _bridge_e2e. (#4์์ verify_error ํ๋ ์ถ๊ฐ + ๊ฒ์ฆ๋ธ๋ก try/except ํ๋ณตํ๋ ฅ์ฑ ๋ณด๊ฐ.)
โ โ ์์ ๋ ๋ ๋ฒ + subagent ๊ฐ์ ๊ตฌํ (์ฝ๋ ์๋ฃ, 2026-06-01)
- ๋ ๋ฒ1ยท2 + T0/T1 (
6f3efd4): ๋ ๋ฒ1 =sara/agent.pydisallowed_tools๋ก built-in raw 6์ข ํ๋๋ธ๋ก(SDKallowed_tools๋ ์๋์น์ธ ๋ชฉ๋ก์ผ ๋ฟ์ด๋ผ ๋์ ๊ทผ๋ณธ์์ธ) +sara/permission_hook.pybroker_gatebase๋งค์นญ(MCP ํ๋ฆฌํฝ์ค ์ฐํ ์ฐจ๋จ). ๋ ๋ฒ2 =sara/codi_bridge.pyintent==GENERAL์ผ ๋๋ง ์ฝ๋์์ โtask ์ค๋ฒ๋ผ์ด๋. vendoredrouter_evaluator.pydiff 0. pytest 107 passed + ์ ๊ท 14. ๋ผ์ด๋ธ T1(BRIDGE=0) PASS = raw ๋ฏธ์ฌ์ฉยท์ปค๋ฐ 0. - subagent_type=codi ๊ฐ์ + diag fix (
f470578, 115 passed):.claude/agents/codi.md๋ฑ๋ก +.claude/settings.jsonbroker ํ verbatim ๋ณต์ +broker_gateAgent ๋ถ๊ธฐ deny-on-mismatch + ๊ณ์ฝ 4ํญ + diag ํฌ๋์ fix + ๋จ์ 5์ผ์ด์ค. ์์ธ = ์ธ์์ธ๊ณ์ #4 / ์ธ๋ถ ์์ ยง11.
โ ์์ ๋ผ์ด๋ธ ๊ฒ์ฆ โ T2 FAIL โ PROBE-0 FAIL (๋ฏธํด๊ฒฐ, #25๋ก ์ด์, 2026-06-01)
- T2(
BRIDGE=1) FAIL = ์์ ์ง์ (route=taskยทdelegated)ํ์ผ๋ ์ค์ปค๋ฐ 0. ๋น์ ์ถ์ ์์ธ 3 ์ค โก(broker๊ฐ ๋ก์ปฌ commit ์ฐจ๋จ)๋ ์ค์ง์ผ๋ก ํ๋ช โ broker๋ ์ด๋ฏธ ๋ก์ปฌ commit AUTO_ALLOW, T2 ์๊ฐ๋ broker ์์ฒญ 0๊ฑด(์ฐจ๋จ ์ฃผ์ฒด๋ SDK ์๋๋ฐ์ค). - PROBE-0(codi ์ธ์) FAIL =
f470578๋ผ์ด๋ธ ๊ฒ์ฆ์์ "Agent type 'codi' not found".claude mcp serve๊ฐ cwd.claude/agents/๋ฅผ ์ ์ฌํ์ง ์์(ยง8.3 "broker ๊ฒฝ์ ๊ฐ์ "์ ์ ์ ์ธ "์๋ธ์์ด์ ํธ ๋ก๋"๊ฐ NO). ยง3 ๊ฐ์ ยทยง4 diag๋ PASS. โ #25 ์ฌ์ค๊ณ:claude mcp serve --help์ค์ธก โ SDKagents์ต์ ์ฃผ์ โ ์ธํ๋ก์ธ์ค ์๋ธ์์ด์ ํธ ์ ํ ์.SARA_CODI_BRIDGE๊ธฐ๋ณธ OFF ์ ์ง. - โ ๊ตํ: ์ฝ๋๊ฐ ๋ฆฌํฌ์ ์๋ ์ปค๋ฐ(
beb0f3a)์ "์๋ฃ"๋ก ๋ณด๊ณ ํ ์ ๋ก โ ์๋ฃ ๋ณด๊ณ ๋ ํญ์ git/RDS ์ค๋์กฐ ํ ์ ๋ขฐ. (#4๋f470578๋ฅผ git/db ์ฌํ์ผ๋ก ๊ฒ์ฆํจ.) - SARA ์์จ ํ
์คํธ ๋ถ์ฐ๋ฌผ ์ปค๋ฐ
1ae03fa(๋ง์ปคokโoktest) ๋๋๋ฆฌ๊ธฐ ๋ณด๋ฅ.
โ hub viewer UI + GPT ์ฝ๊ธฐ๋๊ตฌ (์๋ฃ, 2026-06-01 / 05-30)
hub viewer ํค๋ ํ ํฝ ๊ธฐ๋ณธ์ ํ ํ ๊ธ(a386947, push ์๋ฃ) ยท GPT ๊นํ๋ธยท๋
ธ์
์ฝ๊ธฐ function-calling 3์ข
(f3282ae, Responses API ์ ํ). ์์ธ๋ ์ธ์์ธ๊ณ์ ๋ณธ๋ฌธ ์ด๋ ฅ ๋ธ๋ก.
์์นด์ด๋ธ ๋ชฉ๋ก (2026-06-02 ์ถ๊ฐ โ SARAโ์ฝ๋ ์์ (๋ค) CLI ๋ฌ๋ ์๋ฃยทํ์ฑํ)
์ธ์์ธ๊ณ์ ์ค๋ ์ท #2~#10์์ ์ด๋. ์์ ์ฑ๋ ํ์ โ๊ตฌํโ๊ฒ์ฆโํ๋ฆฝโํ์ฑํ๊น์ง์ ์ ์ฒด ๊ฒฝ๊ณผ.
โ ๋ฐฉ์ (๋ค) CLI ๋ฌ๋ ์ ์ (ํ์ , #25)
SARAโ์ฝ๋ ์์ = codi๋ฅผ ๋ณ๋ claude -p ์๋ธํ๋ก์ธ์ค๋ก ์คํ(cmdboard codi_runner_cli ํจํด ์ด์). ๊ธฐ๊ฐ: (๊ฐ) claude mcp serve๋ cwd .claude/agents/ ๋ฏธ์ ์ฌ(PROBE-0 "Agent type 'codi' not found" ์์ธ). ๋ฏธ์ฑํ: (๋) SDK ๋ค์ดํฐ๋ธ ์๋ธ์์ด์ ํธ(๋์ํ๋ ์คํฌยทํ๋ฌ๊ทธ์ธ opt-inยทํ๋ก์ธ์ค ๊ฒฉ๋ฆฌ ์ฝํจ). (๋ค) ์ฑํ = ์คํฌยทํ๋ฌ๊ทธ์ธ ํ ๋ค์ดํฐ๋ธ + ์ง์ง ํ๋ก์ธ์ค ๊ฒฉ๋ฆฌ + cmdboard ํ๋ค์ค ์ฌ์ฌ์ฉ + .claude/settings.json broker ํ
์ค์๋ + codi ๋ฏธ์ธ์ ๋ฌธ์ ์๋ฉธ.
โ (๋ค) ๋ฐํ ์ ์ ๊ฒฐ ํ์ธ 5๊ฑด (cmdboard ์ด์ ์ ๊นจ์ง๋ ์ง์ )
A. --max-turns ๋ถ์ฌ(์ค์น CLI v2.1.154) โ argv ์ ๊ฑฐยทtimeout_s ๋์ฒด. B. broker ํ
= --bare๋ง ์์ผ๋ฉด ์๋๋ก๋ + --setting-sources user,project,local ๋ช
์. C. ์ํ๊ฐ bypassPermissions๋ฅผ cmdboard ์์ ๊ฒ์ฌ๊ฐ ๋ชป ์ก์ โ allowlist ์ฐจ๋จ(acceptEdits ์นํ). D. activity_logs payload ํค = commit(not commit_sha), ์ ๊ทํค ์ฌ์ฌ์ฉยทํ์ฅ์ sara_codi_cli_result 1ํค ์ค์ฒฉ. E. --effort(low~max)ยท--fallback-model(--print ์ ์ฉ) ํ๊ธฐ ํ์ .
โ GPT ํ์ ๋๊ตฌ(์ฝ๊ธฐ) ์ฝ๋ ์ง์๋ฌธ ์์ฑ (2026-06-01, ์ ํยทํ์์)
hub GPT ์ด๋ํฐ ๋ก์ปฌ์ฝ๊ธฐ 3์ข
(local_read_file/local_list_dir/local_search) + web_fetch(B) ์ง์๋ฌธ ์์ฑ(codi_gpt_local_readยทcodi_gpt_web_tools). ์ฐ์ถ๋ฌผ .md ๋์คํฌ ๋ฏธ์ ์ฅ, ์ค์ง ์ถ๊ฐ๊ฐ์น = web_fetch๋ง.
โ
(๋ค) CLI ๋ฌ๋ ๊ตฌํ (์๋ฃ, ์ฝ๋ 38dbb79)
4ํ์ผ +2180: sara/codi_cli_runner.py(vendored ํต์ฌ+๊ด์ธก 5์ข
) ยท custom_tools/codi_run.py(codi_run SDK MCP, ๊ฒ์ดํธ OFF) ยท tests/test_codi_cli_runner.py(34) ยท sara/codi_bridge.py(SARA_CODI_CLI=1 ๋ถ๊ธฐ _delegate_via_cli, ๊ธฐ๋ณธ OFF). vendored pin = delix0731/cmdboard@feat/admin-unify-bundleB:bc4215b. ๊ด์ธก 5์ข
= โ git/RDS ๊ถ์ โก์ข
๋จ๊ณ์ฝ ํญ์ ๋ฐํ โข๋
๋ฆฝ EVALUATOR โฃ์ค๋
์ท ์ฌ๊ฐ/๋กค๋ฐฑ โคNDJSON ์ ์ฌ+stall. ์ง์๋ฌธ codi_cli_runner_2026-06-02.md. ์ฑํฐ ๊ฒ์ฆ: ์ปค๋ฐยท4ํ์ผยทmaster ๋ฏธ๋ณ๊ฒฝยทvendored pin ์ผ์นยทargv ๊ธ์งํ ํฐ ์ฐจ๋จยท๊ฒ์ดํธ OFFยทํ
์คํธ 34ยทbroker ์ฐํ 0๊ฑด.
โ
๊ฒ์ฆ 2๊ฑด PASS + P-6 + ํ์ฑํ (์๋ฃ, 2026-06-02, master 38dbb79)
โ pytest 149 passed(.venv + uv run --with pytest; codi_cli_runner 34). โก RDS ์ค INSERT ๋ผ์ด๋ธ โ _persist_activityโactivity_logs id=7659(action='codi_cli_result', task_id=1393, ์ ๊ทํค+์ค์ฒฉ contract). P-6 = master FF ๋จธ์ง 547cd6a..38dbb79(broker AUTO_ALLOW, CI ์์ด ์๋๋ฐฐํฌ 0) + .env SARA_CODI_CLI=1 ํ๋ฆฝ. ํ์ฑํ = SARA ์ฌ๊ธฐ๋(PID 31288, ํฌ์ค /settingsยท/active 200) โ task/verify ๋ฉ์์ง ์ฝ๋ claude -p ์๋์์ ON. ๋๋๋ฆฌ๊ธฐ = .env์์ SARA_CODI_CLI ์ ๊ฑฐ/0 โ ์ฌ๊ธฐ๋(์ฝ๋ inert, ๋จธ์ง ๋๋๋ฆผ ๋ถํ์).
โ ์ฌ๋ฌด์ค PC(poinimos01 100.101.40.17) tailnet ์ ์ (ํด๊ฒฐ, 2026-06-02)
์์ธ = ์ง PC์ ๋ณ๋ WireGuard VPN(full-tunnel 0.0.0.0/0) kill-switch๊ฐ Tailscale(100.64.0.0/10) ์๋ต๊น์ง ์ฐจ๋จ(SARAยท๋ฐฉํ๋ฒฝยทํฐ๋์ ์ ์, sara.log์ 200 ๋ค์). ์กฐ์น = WireGuard "Block untunneled traffic(kill-switch)" ์ฒดํฌ ํด์ . ๋์(ํ์ฌ ํธ๋ํฝ full-tunnel ์ ์ง ์) = AllowedIPs์์ 100.64.0.0/10 ์ ์ธ. ๋๋๋ฆฌ๊ธฐ = ์ฒดํฌ ์ฌ์ ํ.