<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Graft Archives -</title>
	<atom:link href="https://blog.kwt.co.kr/tag/graft/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.kwt.co.kr/tag/graft/</link>
	<description>여러분의 돈과 시간을 낭비하지마세요.</description>
	<lastBuildDate>Thu, 08 Oct 2026 00:16:34 +0000</lastBuildDate>
	<language>ko-KR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.6.2</generator>

<image>
	<url>https://blog.kwt.co.kr/wp-content/uploads/2022/07/cropped-logo_bg-32x32.jpg</url>
	<title>Graft Archives -</title>
	<link>https://blog.kwt.co.kr/tag/graft/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Claude Code가 매번 코드를 다시 읽는 문제, Graft로 끊기: 설치·보안·제거 직접 검증</title>
		<link>https://blog.kwt.co.kr/graft-claude-code-context-layer-install-security/</link>
					<comments>https://blog.kwt.co.kr/graft-claude-code-context-layer-install-security/#respond</comments>
		
		<dc:creator><![CDATA[시간 조절자]]></dc:creator>
		<pubDate>Sun, 06 Sep 2026 21:56:02 +0000</pubDate>
				<category><![CDATA[기술]]></category>
		<category><![CDATA[Agent Skills]]></category>
		<category><![CDATA[AI 코딩 에이전트]]></category>
		<category><![CDATA[Claude Code]]></category>
		<category><![CDATA[Graft]]></category>
		<category><![CDATA[MCP]]></category>
		<guid isPermaLink="false">https://blog.kwt.co.kr/?p=2856</guid>

					<description><![CDATA[<p>Graft는 코드베이스를 한 번 그래프로 만들어 Claude Code·Codex의 반복 탐색을 없애는 MIT 오픈소스다. 10-08 갱신: npm 0.21.1, 스타 9,704★, ARM64 미지원 재확인. 격리 설치 검증, 텔레메트리 차단법, 제거 절차까지.</p>
<p>The post <a href="https://blog.kwt.co.kr/graft-claude-code-context-layer-install-security/">Claude Code가 매번 코드를 다시 읽는 문제, Graft로 끊기: 설치·보안·제거 직접 검증</a> appeared first on <a href="https://blog.kwt.co.kr"></a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Claude Code·Codex·Cursor에 반복 지시를 내리면 에이전트가 매번 프로젝트를 처음부터 탐색하는 낭비가 생긴다. Graft는 코드베이스를 한 번 그래프로 만들어 에이전트가 재탐색 없이 구조를 재사용하게 하는 오픈소스 컨텍스트 레이어다. 이 글은 2026-09-07 발행 후 <strong>2026-10-08 기준으로 수치를 전부 다시 검증</strong>했다. 4주 사이 GitHub 스타는 5,769★→9,704★(+69%), npm 최신 버전은 0.16.0→0.21.1, 월 다운로드는 약 2.3만→10.4만 회로 늘었다. 국내에도 개념 소개 글이 여러 개 생겼지만 설치·보안·제거를 임시 환경에서 직접 검증한 글은 여기가 유일하다. 핵심 주의점은 두 가지다. 공식 벤치마크(토큰 42% 절감 등)는 모두 제작사 자체 측정이고, 리눅스 ARM64에서는 0.21.1 현재도 네이티브 모듈이 실행되지 않는다(공개 이슈 #119, 이번 갱신 때 재현 확인).</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><strong>핵심 요약</strong></p>

<ul class="wp-block-list">
<li><strong>무엇</strong>: Graft — tree-sitter 기반 코드 그래프를 만들어 Claude Code/Codex/Cursor/Gemini 등에 연결하는 컨텍스트 레이어 (MIT, npm <code>@nanonets/graft</code>)</li>

<li><strong>누구에게</strong>: 큰 저장소에서 Claude Code/Codex를 매일 쓰는데 토큰·시간이 반복 탐색으로 낭비된 개발자</li>

<li><strong>검증 결과</strong>: 임시 홈에 npm 0.16.0 설치·postinstall 점검·실제 홈 무결성 검증 완료(2026-09-07). 2026-10-08 갱신 때 0.21.1로 재설치해 postinstall·ARM64 동작을 다시 확인했다. 라즈베리파이(ARM64) 호스트에서는 여전히 네이티브 tree-sitter 미지원으로 CLI 실행 불가 — 이슈 #119 오픈 상태</li>

<li><strong>보안</strong>: 익명 텔레메트리(모든 숫자 버킷 처리, <code>DO_NOT_TRACK=1</code>·<code>graft telemetry disable</code>·init 체크 해제 중 하나로 차단, CI에선 자동 off), <code>~/.codex/</code> 사용자 레벨 설정 기입(공개 문서화, <code>--no-global</code>로 회피), API 키 불필요(기본 그래프)</li>

<li><strong>대체재</strong>: Serena(코드 내비게이션 MCP)·Graphify와 비교, LSP와는 보완 관계</li>
</ul>
</blockquote>



<h2 class="wp-block-heading">Graft가 해결하는 반복 탐색 문제</h2>



<p>Claude Code에 &#8220;인증 버그 고쳐줘&#8221;라고 하면 에이전트는 먼저 저장소를 탐색한다. grep으로 용어를 찾고, 파일을 열고, import를 따라가고, 다시 빠져나오는 과정을 반복한다. 한 시간 전에 만들었던 지도를 세션마다 버리고 다시 만드는 셈이다. Graft의 README는 이를 &#8220;에이전트는 매번 온보딩한다&#8221;고 표현한다.</p>



<p>Graft는 이 탐색을 한 번만 수행해 결과를 저장소 안 <code>graft/</code> 폴더에 마크다운 노드 그래프로 저장한다. 구조 분석은 tree-sitter로 로컬에서 결정적으로 이뤄지며, 기본 그래프 빌드에는 API 키도 네트워크 호출도 없다. 이후 에이전트는 파일을 열어 읽듯 그래프를 읽어 탐색 비용을 건너뛴다.</p>



<p>작동 구조를 단순화하면 다음과 같다.</p>



<ol class="wp-block-list">
<li><code>graft build</code> — tree-sitter로 심볼·호출·의존 관계를 추출해 <code>graft/</code> 폴더에 그래프 생성 (LLM 불필요, 무료)</li>

<li><code>graft init</code> — Claude Code(<code>.claude/</code>), Codex(<code>AGENTS.md</code>), Cursor(<code>.cursor/rules/</code>) 등 각 에이전트의 네이티브 설정 파일에 연결</li>

<li>세션 중 hooks — 프롬프트마다 관련 노드를 컨텍스트로 당기고, 편집 후 그래프를 자동 재동기화</li>
</ol>



<h2 class="wp-block-heading">검증 환경과 직접 확인한 사실 (2026-09-07 발행, 2026-10-08 갱신)</h2>



<p>수치 표의 각 행에 조회일을 병기했다. 최초 검증은 2026-09-07, 갱신 재검증은 2026-10-08에 공식 저장소·npm·GitHub API에서 직접 수행했다.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>항목</th><th>값</th></tr></thead><tbody>
<tr><td>공식 저장소</td><td>github.com/trailhq/Graft (이전 NanoNets/Graft, 리다이렉트 확인)</td></tr>
<tr><td>라이선스</td><td>MIT (LICENSE 파일 직접 확인)</td></tr>
<tr><td>npm 최신 버전</td><td>0.16.0 (09-07 조회) → <strong>0.21.1 (2026-09-29 발행, 10-08 재확인)</strong>. 사이에 0.17~0.21 릴리스 5개</td></tr>
<tr><td>스타·포크</td><td>5,769★/538 fork (09-07) → <strong>9,704★/882 fork (10-08)</strong>, 약 4주 +69%</td></tr>
<tr><td>npm 다운로드</td><td>30일 23,499회 (09-07) → <strong>30일 104,539회·최근 7일 21,021회 (10-08)</strong></td></tr>
<tr><td>이슈 활동</td><td>오픈 이슈 81개 (09-07) → 111개 (10-08), 최신 오픈 2026-10-07 — 성장에 따른 버그 리포트 증가</td></tr>
<tr><td>지원 언어</td><td>23개 (고정밀 9종 + broad 14종, 변동 없음)</td></tr>
<tr><td>ARM64(linux)</td><td><strong>0.21.1에서도 실행 불가 재확인</strong> — 이슈 #119 오픈 유지. WASM 폴백 PR #214는 09-29 미머지 종료, 후속은 #337·#325로 이관</td></tr>
</tbody></table></figure>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img fetchpriority="high" decoding="async" width="1035" height="555" src="https://blog.kwt.co.kr/wp-content/uploads/2026/10/graft-stars-update-1.png" alt="Graft GitHub 스타 4주간 변화 막대그래프" class="wp-image-2995" style="width:640px;height:auto"/><figcaption class="wp-element-caption">Graft 스타 증가: 발행 직후 5,769★ → 갱신 확인 9,704★ (+69%, 약 4주)<br>출처: GitHub API 직접 조회 (2026-09-06·2026-10-08)</figcaption></figure></div>



<p><strong>임시 홈 격리 설치 검증.</strong> 실제 홈의 <code>~/.claude</code>, <code>~/.codex</code>, <code>~/.claude.json</code>, <code>~/.claude/settings.json</code> 해시를 설치 전후로 비교했다. 격리된 <code>/tmp</code> 홈에 npm 0.16.0 설치 후 네 개 경로 모두 무결성이 유지됐다(UNCHANGED 4/4). postinstall 스크립트(<code>scripts/postinstall.mjs</code>)를 직접 읽었고, 하는 일은 설치 이벤트 기록 한 건뿐임을 확인했다.</p>



<p><strong>ARM64 실행 실패 — 이것이 이 글의 한계고, 0.21.1에서도 그대로다.</strong> 이 서버는 라즈베리파이(linux/arm64)다. 최초 검증(0.16.0)과 10-08 갱신 재검증(0.21.1) 모두 설치는 되지만 CLI 첫 실행에서 <code>No native build was found for platform=linux arch=arm64</code> 에러로 중단됐다. 의존성 <code>tree-sitter@0.21.1</code>의 prebuild가 darwin-arm64/darwin-x64/linux-x64/win32-x64만 제공하기 때문이다(이슈 #119 오픈 유지). WASM 폴백을 추가하던 PR #214는 2026-09-29 미머지로 종료됐고, 메인테이너는 문법별 격리 #337과 Windows/Kotlin 설치 수정 #325로 좁게 접근하기로 했다. 즉 <strong>linux ARM64 지원은 여전히 미정</strong>이다. 따라서 이 글은 설치·설정 파일 구조·제거 절차의 문서 검증까지이고, x64 머신에서의 실제 그래프 빌드·토큰 절감 A/B는 독자가 직접 수행해야 한다.</p>



<p><strong>x64 사용자라면 이렇게 재현한다.</strong> 리눅스 x64·macOS·윈도우(WSL 포함)에서는 prebuild가 있어 이 단계가 정상 동작한다.</p>



<pre class="wp-block-code"><code># 임시 디렉터리에서 먼저 확인 (실제 프로젝트에 영향 없음)
mkdir /tmp/graft-trial &amp;&amp; cd /tmp/graft-trial
git init &amp;&amp; echo 'console.log(1)' &gt; index.js
DO_NOT_TRACK=1 npm install @nanonets/graft@0.21.1
DO_NOT_TRACK=1 ./node_modules/.bin/graft init --dry-run   # 변경될 파일 목록만 출력
DO_NOT_TRACK=1 ./node_modules/.bin/graft build            # 그래프 생성 (API 키 불필요)</code></pre>



<h2 class="wp-block-heading">Claude Code·Codex·Hermes 연결 방법</h2>



<p><strong>Claude Code (가장 깊은 통합).</strong> <code>graft init</code>을 실행하면 감지된 에이전트 목록이 뜨고, 선택한 에이전트의 설정 파일에 기입한다. Claude Code는 <code>.claude/skills/graft/SKILL.md</code>, 프로젝트 <code>.mcp.json</code>에 MCP 서버, statusline, hooks까지 설치된다. 기존 <code>CLAUDE.md</code>은 건드리지 않고 <code>.claude/settings.json</code>도 자기 블록만 병합한다고 문서화돼 있다.</p>



<p><strong>Codex.</strong> <code>AGENTS.md</code>에 Graft 섹션을 추가하고, <code>~/.codex/</code>가 있으면 사용자 레벨 <code>config.toml</code>(<code>[mcp_servers.graft]</code>), hooks 파일에도 기입한다. 이 부분은 <strong>모든 저장소에 적용되는 machine-wide 변경</strong>이므로 <code>--no-global</code> 플래그로 프로젝트 한정으로 설치하는 편이 안전하다.</p>



<p><strong>Hermes 포함 기타 에이전트.</strong> 표준 MCP 설정에 수동 등록하면 된다. 어떤 에이전트든 MCP 클라이언트라면 다음 JSON을 설정에 넣는다.</p>



<pre class="wp-block-code"><code>{ "mcpServers": { "graft": { "command": "npx", "args": ["-y", "@nanonets/graft", "mcp"] } } }</code></pre>



<p>MCP로 노출되는 도구는 6개다: <code>graft_find_code</code>(질문→랭킹된 노드), <code>graft_file_api</code>(파일 시그니처만), <code>graft_trace_calls</code>(호출자 추적), <code>graft_find_all</code>(정규식 검색), <code>graft_repo_map</code>(저장소 지도), <code>graft_check_freshness</code>(그래프 신선도).</p>



<p><strong>설치 시 실제로 바뀌는 경로 정리.</strong></p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>대상</th><th>경로</th><th>내용</th></tr></thead><tbody>
<tr><td>공통</td><td><code>graft/</code></td><td>코드 그래프(로컬 캐시, <code>.gitignore</code> 자동 추가)</td></tr>
<tr><td>Claude Code</td><td><code>.claude/skills/graft/SKILL.md</code>, <code>.mcp.json</code>, hooks, statusline</td><td>스킬·MCP·자동동기화</td></tr>
<tr><td>Codex</td><td><code>AGENTS.md</code>, <code>~/.codex/config.toml</code>, <code>~/.codex/hooks.json</code></td><td>안내 섹션·MCP·편집 훅</td></tr>
<tr><td>Cursor</td><td><code>.cursor/rules/graft.mdc</code></td><td>룰 파일</td></tr>
<tr><td>Gemini</td><td><code>GEMINI.md</code></td><td>안내 섹션</td></tr>
</tbody></table></figure>




<h2 class="wp-block-heading">제거·원상복구 절차</h2>



<p>Graft는 공식 제거 명령을 제공한다. 이 점이 검증 중 인상적이었던 부분이다.</p>



<pre class="wp-block-code"><code>graft uninstall          # 실제 삭제 전에 제거될 항목을 먼저 출력
graft uninstall -y       # 실제 삭제 (init의 역연산)
graft uninstall --no-global   # ~/.codex·~/.gemini 등 저장소 밖 파일은 유지
npm uninstall -g @nanonets/graft   # CLI 자체 제거</code></pre>



<p><code>uninstall</code>은 init이 기입한 모든 파일과 설정 항목을 역으로 제거한다. <code>--keep-cache</code>로 그래프 캐시만 남길 수도 있다. 임시 검증 환경에서는 <code>rm -rf /tmp/graft-trial</code>로 폴더째 삭제하면 끝난다.</p>



<h2 class="wp-block-heading">보안·권한·텔레메트리: 숨기지 않는 정보</h2>



<ul class="wp-block-list">
<li><strong>네트워크 호출 3종만 존재</strong> (TELEMETRY.md 공식 계약): 사용자가 설정한 LLM 요청, 하루 1회 npm 버전 확인, 배치 처리된 사용 통계 1건. 코드·파일 경로·저장소명·심볼·쿼리는 전송하지 않으며, 모든 숫자는 버킷(예: &#8220;200-999 files&#8221;)으로만 전송된다. <code>src/telemetry/contract.ts</code>가 화이트리스트를 강제하고 미등록 속성은 전송 전 차단한다.</li>

<li><strong>텔레메트리 차단</strong>: <code>DO_NOT_TRACK=1</code> 환경변수, <code>graft telemetry disable</code> 명령, 또는 <code>graft init</code> 프롬프트에서 체크 해제. CI 환경에서는 자동으로 꺼진다.</li>

<li><strong>postinstall</strong>: npm 설치 직후 익명 설치 이벤트 1건을 detached 프로세스로 보낸다. 스크립트 소스를 직접 읽어 확인했고, 설치 실패를 유발하지 않는 구조다.</li>

<li><strong>권한 범위</strong>: 로컬 파일 읽기·그래프 쓰기가 전부. 데몬·서버 없음. <code>--deep</code> 모드에서만 사용자가 지정한 LLM 제공자로 코드 요약 요청이 나간다(자기 API 키 사용).</li>

<li><strong>machine-wide 변경 주의</strong>: Codex 선택 시 <code>~/.codex/</code> 전역 설정이 바뀐다. README가 이를 명시하고 <code>--no-global</code> 회피 경로를 제공하는 것은 투명한 태도다.</li>

<li><strong>공급망</strong>: OpenSSF Scorecard 배지, TypeScript strict, 34개 npm 버전(10-08 기준), 기여자 다수. 악성코드 징후는 없었다.</li>

<li><strong>비용</strong>: 도구 자체 무료(MIT). <code>--deep</code> 사용 시 자기 LLM 키 비용 발생.</li>
</ul>



<h2 class="wp-block-heading">Serena·Graphify·LSP와 비교: 어떤 관계인가</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>구분</th><th>Graft</th><th>Serena (MCP)</th><th>LSP 직접 연결</th></tr></thead><tbody>
<tr><td>분류</td><td>컨텍스트 레이어(그래프 사전 구축)</td><td>코드 내비게이션 MCP</td><td>언어 서버 프로토콜</td></tr>
<tr><td>입력</td><td>저장소 전체를 사전 빌드</td><td>심볼 질의 시점 조회</td><td>심볼 질의 시점 조회</td></tr>
<tr><td>출력</td><td>마크다운 노드 그래프 + MCP 6도구</td><td>정의/참조/기호 편집 도구</td><td>정의/참조/완성</td></tr>
<tr><td>정확도</td><td>제작사 자체 벤치마크(SWE-bench V 54%→66%, 자체 측정)</td><td>LSP 기반으로 결정적</td><td>언어 서버 수준으로 결정적</td></tr>
<tr><td>수정 가능성</td><td>그래프는 재생성 가능한 캐시, 노드에 사용자 노트 보존</td><td>—</td><td>—</td></tr>
<tr><td>비용</td><td>기본 무료, &#8211;deep만 키 비용</td><td>무료</td><td>무료</td></tr>
<tr><td>데이터 처리</td><td>로컬 파일 + 설정한 LLM만</td><td>로컬</td><td>로컬</td></tr>
<tr><td>에이전트 연결</td><td>MCP + Claude Code hooks + 다수 CLI 파일</td><td>MCP</td><td>MCP 래퍼 필요</td></tr>
</tbody></table></figure>




<p>관계를 명확히 하면: Graft는 <strong>grep 반복 탐색에 대한 부분 직접 대체재</strong>이고, Serena는 시점 조회형 내비게이션이므로 <strong>목적이 겹치는 다른 하위 범주</strong>, LSP는 이미 심볼을 아는 경우의 도구라 <strong>보완 관계</strong>다. Graft 제작사가 HN 스레드에서 공개한 자체 비교로는 Graphify 대비 검색 정확도 MRR 0.73 vs 0.38 — 단 이 역시 자체 측정이다.</p>



<h2 class="wp-block-heading">안전한 설치 프롬프트 (복사해서 붙여넣으세요)</h2>



<p>아래 프롬프트를 Claude Code나 Codex에 붙여 넣으면 안전 절차를 따라 설치를 진행한다. 운영 프로젝트에서 바로 실행하지 말 것.</p>



<pre class="wp-block-code"><code>https://github.com/trailhq/Graft 문서를 읽고 다음 절차로 Graft를 설치해줘.

조건:
1. 버전 고정: @nanonets/graft@0.21.1 (npm 레지스트리에서 조회)
2. 먼저 임시 디렉터리(/tmp/graft-trial)에서 검증한다. 실제 프로젝트는 건드리지 마.
3. DO_NOT_TRACK=1 환경변수로 텔레메트리를 끄고 시작한다.
4. graft init --dry-run 출력을 먼저 보여주고, 내가 승인한 파일만 변경한다.
5. ~/.codex/ 전역 설정은 변경 금지 (--no-global 사용).
6. API 키 입력은 절대 요청하지 마. 기본 그래프 빌드만 수행한다.
7. graft build 결과와 graft check 출력을 보여줘.
8. 검증 후 graft uninstall -y와 npm uninstall로 /tmp/graft-trial을 완전히 정리하고,
   변경 전후 파일 목록을 비교해 원상복구를 확인해줘.</code></pre>



<h2 class="wp-block-heading">유용한 경우 vs 추천하지 않는 경우</h2>



<p><strong>도입을 검토할 만한 상황</strong></p>



<ul class="wp-block-list">
<li>수백~수천 파일 규모 저장소에서 Claude Code/Codex를 매일 사용한다</li>

<li>세션마다 반복 탐색으로 토큰이 급격히 소모된다</li>

<li>여러 팀원이 같은 저장소를 에이전트로 다룬다 (wiring만 커밋하면 각자 그래프 생성)</li>

<li>linux x64·macOS 환경이다</li>
</ul>



<p><strong>추천하지 않는 상황</strong></p>



<ul class="wp-block-list">
<li>라즈베리파이 등 <strong>linux ARM64 환경</strong> — 현재 실행 불가 (이슈 #119 오픈 중)</li>

<li>파일 몇 개짜리 소규모 프로젝트 — 탐색 비용 자체가 작아 이득이 없다</li>

<li>제작사 벤치마크 수치를 그대로 보증값으로 받아들이는 용도 — 어디까지나 자체 측정이다</li>

<li>텔레메트리가 자동으로 나가는 것이 원칙적으로 거부되는 환경 — 설치 후 즉시 비활성화 필요</li>
</ul>



<h2 class="wp-block-heading">설치 전 체크리스트</h2>



<ul class="wp-block-list">
<li>[ ] 내 환경이 linux x64 / darwin / win32 인지 확인 (ARM64는 #119 해결 전 불가)</li>

<li>[ ] <code>git status</code>로 커밋되지 않은 변경사항 정리 (백업)</li>

<li>[ ] 임시 디렉터리에서 <code>graft init --dry-run</code> 먼저 실행</li>

<li>[ ] <code>DO_NOT_TRACK=1</code> 설정 여부 확인</li>

<li>[ ] Codex 전역 변경 원치 않으면 <code>--no-global</code> 플래그 사용</li>

<li>[ ] <code>--deep</code> 사용 여부 결정 (LLM 키 비용 발생)</li>

<li>[ ] <code>graft uninstall</code> 시나리오를 미리 dry-run으로 확인</li>
</ul>



<h2 class="wp-block-heading">발행 후 4주간 바뀐 것 (0.16.0 → 0.21.1)</h2>



<p>CHANGELOG과 커밋 비교(v0.16.0&#8230;v0.21.1, 43커밋) 기준으로 핵심 변화만 정리한다. CLI 기본 흐름(설치→init→build→hooks)은 그대로다.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>버전(날짜)</th><th>바뀐 것</th><th>실무적 의미</th></tr></thead><tbody>
<tr><td>0.17.0 (09-02)</td><td>statusline에 절감 금액 표시, Claude Code 배선을 <code>~</code>에도 기입(워크트리·새 셸 유지)</td><td>절감 효과가 달러로 보인다. 다만 홈 디렉터리에도 파일이 생기는 건 알아둘 것</td></tr>
<tr><td>0.18.0 (09-10)</td><td>Trail Brain 통합(팀 규칙 저장소 연동), brain 체크아웃 검증</td><td>호스팅 서비스 Trail과 양방향 연동 시작. 로컬 단독 사용엔 불필요</td></tr>
<tr><td>0.19.0 (09-22)</td><td>터미널에서 brain 푸시, 공개 저장소 무설치 읽기</td><td>Trail 중심 기능 지속 확장</td></tr>
<tr><td>0.20.0·0.21.x (09-25~29)</td><td><code>graft brain</code>→<code>graft trail</code> 명령 개명, <code>graft claude-md pull</code> 추가, 텔레메트리 이벤트 확장</td><td>Trail로 관리된 CLAUDE.md·AGENTS.md 변경을 로컬로 당겨올 수 있다</td></tr>
</tbody></table></figure>



<p>정리하면 로컬 그래프·보안 모델·텔레메트리 계약은 그대로이고, 확장은 대부분 제작사 호스팅 서비스 Trail 연동 쪽이다. Trail 없이 그래프만 쓰는 용법에는 영향이 없다.</p>



<h2 class="wp-block-heading">직접 검증한 것과 검증하지 못한 것</h2>



<p><strong>직접 검증 완료</strong></p>



<ul class="wp-block-list">
<li>npm 0.16.0 격리 설치, postinstall 소스 점검, 실제 홈 4개 경로 해시 무결성 (UNCHANGED 4/4) — 2026-09-07</li>

<li>LICENSE(MIT), README(42KB), TELEMETRY.md 전문 읽기</li>

<li>릴리스 타임라인(0.9.0~0.21.1), 커밋 로그(2026-09-30까지), 이슈 활동 추이 — 2026-10-08 갱신</li>

<li>스타 증가 실측: 발행 시점 관측 +178/일 → 갱신 시점 9,704★ (+69%/4주)</li>

<li>npm 다운로드 공개 API 조회: 월 23,499회 → 104,539회 (10-08)</li>

<li>HN 토론(39pts/44댓글) 원문 확인, 제작자 응답 포함</li>
</ul>



<p><strong>검증하지 못한 것 (독자 과제)</strong></p>



<ul class="wp-block-list">
<li>x64 환경에서의 실제 그래프 빌드·CLI 동작 (ARM64 호스트 한계)</li>

<li>토큰 42% 절감 재현 — 제작사 자체 벤치마크이므로 독자의 프로젝트에서 A/B 필요</li>

<li><code>--deep</code> 모드의 LLM 요약 품질과 비용</li>

<li>자체 저장소에서의 <code>graft viz</code> 시각화 품질</li>
</ul>



<h2 class="wp-block-heading">FAQ</h2>



<h3 class="wp-block-heading">Graft는 무료인가?</h3>



<p>도구 자체는 MIT 라이선스 무료다. 기본 그래프 빌드는 API 키 없이 로컬에서 돈다. <code>--deep</code> 모드로 LLM 요약을 추가할 때만 자신의 API 키 비용이 발생한다.</p>



<h3 class="wp-block-heading">정말 토큰이 42% 절감되나?</h3>



<p>그 수치는 제작사가 162회 자체 벤치마크와 SWE-bench Verified 50케이스로 측정한 자체 발표 값이다. SWE-bench 결과(정확도 54%→66%)는 공식 채점기를 썼다고 명시하지만, 독립 검증은 아니다. 자기 프로젝트에서 같은 커밋·같은 작업으로 A/B 테스트하는 것이 가장 정확하다.</p>



<h3 class="wp-block-heading">ARM64 맥(애플 실리콘)에서도 안 되나?</h3>



<p>darwin-arm64 prebuild는 존재한다. 안 되는 것은 <strong>linux/arm64</strong> 조합뿐이다(라즈베리파이, ARM 리눅스 서버, ARM 도커 이미지). 단 WASM 폴백 PR #214는 09-29 미머지 종료됐고 후속(#337·#325)도 아직 열려 있으니, 해결 시점은 예약하지 않는 편이 맞다.</p>



<h3 class="wp-block-heading">기존 CLAUDE.md이나 설정이 덮어써지진 않나?</h3>



<p>README 명세상 Graft는 자체 섹션만 추가·갱신하고 기존 내용은 건드리지 않는다. statusLine도 Graft 것이 아닌 기존 설정은 그대로 둔다고 문서화돼 있다. 그래도 도입 전 <code>git add</code>로 백업하자.</p>



<h3 class="wp-block-heading">Serena와 Graft 중 무엇을 쓰야 하나?</h3>



<p>이미 심볼 이름을 알고 정의·참조를 추적한다면 Serena(LSP 기반)면 충분하다. &#8220;인증이 어디서 처리되나&#8221; 같은 개념 질의와 대형 저장소 오리엔테이션이 필요하면 Graft가 목적에 맞다. 둘은 경쟁보다 하위 범주가 다른 관계다.</p>



<h3 class="wp-block-heading">이제 한국어 글도 많던데, 이 글의 차이는?</h3>



<p>발행 당시엔 국내 소개 글이 없었지만 지금은 개념 소개·설치 안내 글이 여러 개 있다. 이 글의 차이는 셋이다. 임시 홈 격리 설치로 postinstall과 실제 홈 무결성을 직접 검증했다는 점, ARM64 미지원을 버전을 바꿔가며 두 번 재현했다는 점, 제작사 벤치마크를 자체 측정으로 명시하고 한계를 분리했다는 점이다.</p>



<h3 class="wp-block-heading">제거는 깨끗한가?</h3>



<p><code>graft uninstall -y</code>가 init의 역연산을 수행한다. dry-run으로 삭제 목록을 먼저 볼 수 있어 안전하다. npm 전역 설치라면 <code>npm uninstall -g @nanonets/graft</code>로 마무리한다.</p>



<h2 class="wp-block-heading">공식 참고자료</h2>



<ul class="wp-block-list">
<li>Graft 저장소: https://github.com/trailhq/Graft</li>

<li>npm 패키지: https://www.npmjs.com/package/@nanonets/graft</li>

<li>텔레메트리 문서(TELEMETRY.md): https://github.com/trailhq/Graft/blob/main/TELEMETRY.md</li>

<li>ARM64 이슈 #119: https://github.com/trailhq/Graft/issues/119</li>

<li>CHANGELOG (0.9.0~0.21.1): https://github.com/trailhq/Graft/blob/main/CHANGELOG.md</li>

<li>HN 토론 원문: https://news.ycombinator.com/item?id=49299985</li>

<li>Agent Skills 사양: https://agentskills.io/home</li>
</ul>

		<div class="wpulike wpulike-robeen " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="Like Button"
					data-ulike-id="2856"
					data-ulike-nonce="1c85db40a9"
					data-ulike-type="post"
					data-ulike-template="wpulike-robeen"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_2856"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>
	<p>The post <a href="https://blog.kwt.co.kr/graft-claude-code-context-layer-install-security/">Claude Code가 매번 코드를 다시 읽는 문제, Graft로 끊기: 설치·보안·제거 직접 검증</a> appeared first on <a href="https://blog.kwt.co.kr"></a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.kwt.co.kr/graft-claude-code-context-layer-install-security/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
