<?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>오픈소스 Archives -</title>
	<atom:link href="https://blog.kwt.co.kr/tag/%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.kwt.co.kr/tag/오픈소스/</link>
	<description>여러분의 돈과 시간을 낭비하지마세요.</description>
	<lastBuildDate>Tue, 15 Sep 2026 21:46:11 +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>오픈소스 Archives -</title>
	<link>https://blog.kwt.co.kr/tag/오픈소스/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>코딩 에이전트를 연구 도구로 바꾸는 166개 스킬 팩: Scientific Agent Skills 설치·보안·제거 직접 검증</title>
		<link>https://blog.kwt.co.kr/scientific-agent-skills-install-security-removal/</link>
					<comments>https://blog.kwt.co.kr/scientific-agent-skills-install-security-removal/#respond</comments>
		
		<dc:creator><![CDATA[시간 조절자]]></dc:creator>
		<pubDate>Tue, 15 Sep 2026 21:46:11 +0000</pubDate>
				<category><![CDATA[기술]]></category>
		<category><![CDATA[Agent Skills]]></category>
		<category><![CDATA[Claude Code]]></category>
		<category><![CDATA[Codex]]></category>
		<category><![CDATA[Hermes]]></category>
		<category><![CDATA[오픈소스]]></category>
		<guid isPermaLink="false">https://blog.kwt.co.kr/?p=2915</guid>

					<description><![CDATA[<p>K-Dense Scientific Agent Skills(v2.69.0, MIT, 166개 스킬·100여 개 과학 DB 연동)를 Claude Code·Codex·Hermes에 설치하는 방법과 격리 환경 설치·제거 실측, 권한·API 키·보안 주의점, Anthropic 공식 skills와의 비교를 2026-09-16 기준으로 정리했다.</p>
<p>The post <a href="https://blog.kwt.co.kr/scientific-agent-skills-install-security-removal/">코딩 에이전트를 연구 도구로 바꾸는 166개 스킬 팩: Scientific Agent Skills 설치·보안·제거 직접 검증</a> appeared first on <a href="https://blog.kwt.co.kr"></a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Claude Code·Codex·Cursor 같은 코딩 에이전트를 생물·화학·의학·데이터 분석용 &#8220;연구 비서&#8221;로 바꾸고 싶은 사람에게 유용한 오픈소스가 Scientific Agent Skills다. K-Dense가 MIT 라이선스로 공개한 Agent Skills 표준 기반 스킬 모음으로, 2026년 9월 기준 166개 스킬과 100개 이상의 과학 데이터베이스 연동을 제공한다. 핵심 주의점은 두 가지다. 첫째, 이전 이름이 &#8220;Claude Scientific Skills&#8221;였는데 2026년 하반기 Claude 전용에서 Agent Skills 공개 표준으로 확장 개명되어, 국내에는 옛 이름·옛 버전(v2.38 이전)으로 정리된 글이 많다. 둘째, 스킬은 에이전트에게 임의 코드 실행·패키지 설치·네트워크 요청 권한을 주는 구조라 설치 전 검토가 필수다. 이 글은 2026-09-16 공식 저장소와 실제 격리 설치·제거 검증을 기준으로 쓰였다.</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>: K-Dense-AI/scientific-agent-skills — 166개 연구용 Agent Skills + 100여 개 과학 DB 연동, MIT 라이선스</li>

<li><strong>누가</strong>: 논문 리터처리 리뷰, 생물정보학 파이프라인, 데이터 분석·시각화를 에이전트에 맡기는 연구자·학생·데이터 분석가</li>

<li><strong>어떻게</strong>: <code>npx skills add</code> 한 줄 또는 <code>gh skill install</code> (v2.69.0 릴리스, 2026-09-11)</li>

<li><strong>주의</strong>: 스킬별 API 키 필요 여부가 다르고, 실행 권한이 강하므로 필요한 스킬만 골라 설치하고 버전을 고정한다</li>

<li><strong>검증</strong>: 본문의 설치·제거 절차와 결과는 2026-09-16 격리 환경에서 직접 실행해 확인했다</li>
</ul>
</blockquote>



<h2 class="wp-block-heading">Scientific Agent Skills란 무엇인가</h2>

<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img fetchpriority="high" decoding="async" width="1035" height="585" src="https://blog.kwt.co.kr/wp-content/uploads/2026/09/sas-before-after-diagram.png" alt="Scientific Agent Skills 설치 전후 비교 다이어그램" class="wp-image-2914" style="width:560px;height:auto"/><figcaption class="wp-element-caption">Scientific Agent Skills 적용 전후 에이전트 동작 차이 (개념 도식)<br>기준: K-Dense-AI/scientific-agent-skills v2.69.0 README</figcaption></figure></div>



<p>Scientific Agent Skills는 미국 스타트업 K-Dense가 2025년 10월부터 공개해 온 연구용 스킬 라이브러리다. 하나의 저장소에 SKILL.md 형식의 Agent Skills 166개가 들어 있고, 생물정보학·화학정보학·임상 연구·머신러닝·지리공간·연구 방법론 같은 영역을 문서+예제+스크립트 형태로 담는다. Agent Skills 표준(agentskills.io)을 읽을 수 있는 호스트라면 Claude Code, Codex, Cursor, Gemini CLI, Antigravity 어디서든 쓸 수 있고, plugin.json을 포함해 Agent Plugins 1.0.0 패키지로도 동작한다.</p>



<p>이 프로젝트의 차별점은 규모와 검증이다. 100개 이상 공개 과학 데이터베이스(PubChem, ChEMBL, UniProt, COSMIC, ClinicalTrials.gov, FRED 등)에 대한 조회 절차를 스킬로 문서화했고, 기여 스킬은 리뷰를 거치며 Cisco AI Defense Skill Scanner로 자동 보안 스캔을 돌린다. 2026-09-03에는 기법을 설명하는 논문이 arXiv(2609.00065)에 올라와 있어, 단순 프롬프트 모음이 아니라 &#8220;절차적 지식 라이브러리&#8221;를 지향함을 알 수 있다.</p>



<h3 class="wp-block-heading">기본 정보 (2026-09-16 확인)</h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>항목</th><th>값</th></tr></thead><tbody>
<tr><td>이름·유형</td><td>Scientific Agent Skills — Agent Skills 라이브러리 (연구용 스킬 팩)</td></tr>
<tr><td>공식 저장소</td><td>github.com/K-Dense-AI/scientific-agent-skills</td></tr>
<tr><td>만든 날짜</td><td>2025-10-19</td></tr>
<tr><td>최신 릴리스</td><td>v2.69.0 (2026-09-11)</td></tr>
<tr><td>최근 커밋</td><td>2026-09-14 (보안 스캔 리포트 갱신)</td></tr>
<tr><td>Stars / Forks</td><td>45,057 / 4,087</td></tr>
<tr><td>라이선스</td><td>MIT</td></tr>
<tr><td>필요 환경</td><td>Python 3.13+(도구용), uv, Agent Skills 지원 호스트, macOS/Linux/Windows WSL2</td></tr>
<tr><td>검증 시각</td><td>2026-09-16 06:30~06:45 KST (GitHub API·격리 설치 실측)</td></tr>
</tbody></table></figure>




<p>Stars 증가 속도는 이번 관측이 첫 스냅숏이라 증분 실측치는 아직 없다(provisional). 다만 공개 이후 11개월간 45,057★, 최근 일주일 커밋 61건, 9월 들어 v2.66→v2.69 릴리스가 3번 나오는 등 유지보수 활동은 살아 있음을 GitHub API로 확인했다.</p>



<h2 class="wp-block-heading">어떤 문제를 풀고, 누가 쓰나</h2>



<p>LLM 에이전트에 &#8220;EGFR 억제제 후보를 정리해줘&#8221; 같은 연구 과제를 주면, 보통은 동작하는 코드는 만들지만 그 분석이 방법론적으로 방어 가능한지는 보장하지 못한다. 어떤 통계 검정을 그 분야에서 받아들이는지, 어떤 식별자 네임스페이스가 권위 있는지, 결과에 어떤 주의사항이 붙어야 하는지는 절차적 지식이기 때문이다. Scientific Agent Skills는 바로 이 절차적 지식을 스킬로 정리해 에이전트가 참조하게 한다.</p>



<p>유용한 경우:</p>



<ul class="wp-block-list">
<li>문헌 리뷰(literature-review), 인용 관리(citation-management), 논문 슬라이드·포스터(scientific-slides) 같은 연구 커뮤니케이션 작업</li>

<li>Scanpy 단일세포 분석, RDKit 분자 속성 계산, pydicom 의료영상 처리 같은 전문 파이썬 워크플로</li>

<li>ChEMBL·PubChem·ClinicalTrials.gov 등 공개 DB 조회가 반복해서 필요한 데이터 파이프라인</li>

<li>&#8220;AI 과학자&#8221;류 실험을 해보고 싶지만 프롬프트를 매번 다시 쓰기 번거로운 연구자</li>
</ul>



<p>추천하지 않는 경우:</p>



<ul class="wp-block-list">
<li>일반 웹 개발·앱 코딩이 주 업무인 사람 — 이 라이브러리는 과학·연구 절차에 특화되어 있다</li>

<li>스킬이 에이전트에게 강한 실행 권한을 준다는 점을 검토 없이 받아들이고 싶은 환경 — 보안 검토 없이 166개 전체를 설치하는 것은 권장하지 않는다</li>

<li>API 키를 못 쓰는 폐쇄망 — 일부 스킬(OpenRouter 연동 스키매틱 생성 등)은 키가 있어야 동작한다</li>
</ul>



<h2 class="wp-block-heading">Claude Code·Codex·Hermes별 설치와 제거</h2>



<p>공식 README는 세 가지 설치 경로를 제공한다. 공통 원칙은 &#8220;필요한 스킬만 골라서, 버전을 고정해 설치하라&#8221;는 것이다.</p>



<h3 class="wp-block-heading">방법 1: npx skills (표준 설치기)</h3>



<pre class="wp-block-code"><code># 전체 설치
npx skills add K-Dense-AI/scientific-agent-skills

# 특정 스킬만 설치 (권장)
npx skills add K-Dense-AI/scientific-agent-skills --skill literature-review</code></pre>



<p>설치되는 위치는 호스트별로 다르다. Claude Code는 <code>~/.claude/skills/</code>, Codex는 <code>~/.codex/skills/</code>, 공용 컨벤션은 프로젝트 단위 <code>.agents/skills/</code>다. 설치기가 감지한 호스트 목록을 출력하므로 결과 메시지에서 자기 호스트가 포함됐는지 확인한다.</p>



<h3 class="wp-block-heading">방법 2: gh skill (GitHub CLI 2.90.0+)</h3>



<pre class="wp-block-code"><code># 버전 고정 설치 (재현성 확보)
gh skill install K-Dense-AI/scientific-agent-skills --pin v2.69.0 --agent claude-code
gh skill install K-Dense-AI/scientific-agent-skills --pin v2.69.0 --agent codex

# 업데이트 확인
gh skill update --all

# 제거
gh skill uninstall &lt;skill-name&gt;</code></pre>



<h3 class="wp-block-heading">방법 3: Hermes Agent</h3>



<p>Hermes는 스킬 탭 기능으로 이 저장소 전체를 소스로 추가할 수 있다.</p>



<pre class="wp-block-code"><code>hermes skills tap add K-Dense-AI/scientific-agent-skills
hermes skills list
hermes skills tap remove K-Dense-AI/scientific-agent-skills</code></pre>



<h3 class="wp-block-heading">설치 시 바뀌는 경로와 원상복구</h3>



<ul class="wp-block-list">
<li>Claude Code: <code>~/.claude/skills/&lt;skill-name&gt;/</code> 디렉터리 추가 → 제거 시 해당 디렉터리 삭제로 원상복구</li>

<li>Codex: <code>~/.codex/skills/&lt;skill-name&gt;/</code> 동일 구조</li>

<li>프로젝트 공용: <code>&lt;프로젝트&gt;/.agents/skills/&lt;skill-name&gt;/</code> → 폴더 삭제면 끝</li>

<li>어떤 경로도 설정 파일 레지스트리를 바꾸지 않는다(스킬 디렉터리 스캔 방식)는 점을 격리 검증에서 확인했다</li>
</ul>



<h2 class="wp-block-heading">직접 검증한 내용 (2026-09-16, 격리 환경)</h2>



<p>이 글의 설치·제거 절차는 실제 환경에서 분리된 임시 HOME으로 검증했다. 실제 사용자 홈은 변경되지 않았다.</p>



<p>실행한 검증:</p>



<ol class="wp-block-list">
<li>임시 디렉터리에 격리 HOME·XDG 환경변수를 설정한 뒤 <code>npx skills add K-Dense-AI/scientific-agent-skills --skill literature-review -y</code>를 실행했다.</li>

<li>설치 결과 <code>./.agents/skills/literature-review/SKILL.md</code>가 생성됐고, 설치기 출력에 &#8220;Installed 1 skill · universal: Amp, Antigravity, Codex +15 more&#8221;가 확인됐다. 설치 전 skills.sh 진단 화면이 떠서 해당 스킬의 위험도(High Risk 아님, 알림 0건)를 같이 봤다.</li>

<li>설치된 SKILL.md의 프론트매터를 열어 <code>allowed-tools: Read Write Edit Bash</code>, 선택적 환경변수 <code>OPENROUTER_API_KEY</code>(필수 아님)를 확인했다.</li>

<li><code>npx skills remove literature-review -y</code>로 제거했다. 제거 후 <code>.agents/skills</code>에 스킬이 0개인 것을 확인했다.</li>

<li>실제 사용자 홈에는 <code>.agents</code> 디렉터리가 만들어지지 않았고, 기존 <code>.claude</code> 설정에도 변화가 없음을 확인했다.</li>
</ol>



<p>추가로 저장소 전체(커밋 330c8e7)를 내려받아 정적 보안 검사를 돌렸다:</p>



<ul class="wp-block-list">
<li><code>curl | bash</code> 형태의 문자열 8건은 모두 저장소 스스로 작성한 보안 스캔 리포트(docs/security-report.md)가 위험 패턴을 문서화한 것이었다</li>

<li>하드코딩된 것처럼 보이는 API 키는 전부 <code>your_api_key_here</code>류 플레이스홀더였다</li>

<li>추천 텔레메트리·분석 엔드포인트는 발견되지 않았다</li>

<li>스킬별 참조 환경변수는 100여 개(대부분 공개 과학 DB·LLM 제공자 API 키)이며, 설치 자체에는 키가 필요 없다</li>
</ul>



<p>검증하지 못한 것: 실제 연구 과제로 166개 스킬의 기능을 실행한 것은 아니다. 문헌 리뷰 스킬의 종단 결과물 생성, 데이터베이스 실조회, 생성형 스키매틱 이미지 출력은 이번 검증 범위 밖이다. 스킬이 &#8220;설치·인식·제거&#8221;되는지만 확인했고 기능 실행은 별도 과정이다.</p>



<h2 class="wp-block-heading">권한·비용·보안: 숨기지 않는 주의점</h2>



<ul class="wp-block-list">
<li><strong>실행 권한</strong>: Agent Skills는 에이전트가 임의 코드를 실행하고 패키지를 설치하며 네트워크 요청을 보낼 수 있게 유도할 수 있다. 저장소 보안 안내도 이를 명시적으로 경고한다.</li>

<li><strong>보안 스캔</strong>: 기여 스킬은 리뷰와 Cisco AI Defense Skill Scanner 자동 스캔을 거치지만, 소규모 팀이 운영하는 커뮤니티 기여가 늘어나는 상황에서 모든 스킬을 완전히 검증했다고 보장하지 않는다고 스스로 밝힌다. 맹신은 금물이다.</li>

<li><strong>API 키·비용</strong>: 설치에는 키가 필요 없지만, OpenRouter 연동 이미지 생성(scientific-schematics), Exa 검색(exa-search), Adaptyv·Benchling 등 상당수 스킬은 각자 API 키를 요구한다. 키를 넣으면 해당 서비스 비용이 발생할 수 있다.</li>

<li><strong>데이터 경계</strong>: 공개 과학 DB 조회는 각 DB의 이용약관을 따른다. 환자 데이터·미공개 연구 데이터를 다루는 스킬(clinical-reports 등)은 프라이버시 검토가 선행되어야 한다.</li>

<li><strong>공급망</strong>: 의존성은 uv로 스킬별 설치된다. 버전 고정(<code>--pin</code>) 설치가 재현성 면에서 안전하다.</li>

<li><strong>라이선스</strong>: MIT라 상업적 사용도 가능하지만, 스킬이 안내하는 외부 DB·API의 라이선스는 별개로 확인해야 한다.</li>
</ul>



<h2 class="wp-block-heading">기존 유명 도구와 비교: 무엇을 대체하고 무엇을 보완하나</h2>



<p>이 영역에서 가장 잘 알려진 기준점은 Anthropic 공식 skills 저장소(anthropics/skills)다. 두 저장소를 같은 잣대로 비교하면 다음과 같다.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>비교 항목</th><th>Scientific Agent Skills</th><th>Anthropic skills (공식)</th></tr></thead><tbody>
<tr><td>분류</td><td>연구 절차 특화 서드파티 스킬 라이브러리</td><td>범용 공식 스킬 저장소</td></tr>
<tr><td>입력</td><td>연구 과제 프롬프트 + 스킬별 API 키</td><td>일반 작업 프롬프트</td></tr>
<tr><td>출력 mechanism</td><td>문서화된 절차·스크립트·DB 조회 흐름을 에이전트가 따르도록 지시</td><td>범용 워크플로 지시</td></tr>
<tr><td>규모</td><td>166개 스킬 + 100여 DB 연동</td><td>수십 개 수준</td></tr>
<tr><td>정확성 접근</td><td>분야별 권위 있는 DB·식별자를 지정해 환각 억제</td><td>범용 지침</td></tr>
<tr><td>수정 가능성</td><td>MIT라 마음대로 수정·재배포 가능</td><td>공식 저장소 정책에 따름</td></tr>
<tr><td>비용</td><td>스킬 무료, 일부 스킬의 API 키는 유료 가능</td><td>스킬 무료</td></tr>
<tr><td>데이터 처리</td><td>공개 과학 DB 중심, 키 입력 시 외부 전송 발생</td><td>호스트별 기본 동작</td></tr>
<tr><td>에이전트 연결</td><td>Agent Skills 표준 + Agent Plugins (Claude Code·Codex·Cursor·Gemini·Hermes)</td><td>Claude 계열 중심</td></tr>
</tbody></table></figure>




<p>관계를 정리하면 <strong>보완재에 가깝다</strong>. Anthropic 공식 스킬은 범용 작업의 기본기를 담당하고, Scientific Agent Skills는 연구 절차라는 세로 영역을 깊게 파는 구성으로 함께 쓰는 것이 자연스럽다. MCP 서버와 비교하면 계층이 다르다. MCP는 도구 호출 인터페이스를 제공하고, 스킬은 절차적 지식을 에이전트 컨텍스트에 주입한다. DB 조회용 MCP 서버가 이미 있다면 스킬의 DB 안내와 병행할 수 있다.</p>



<ul class="wp-block-list">
<li><strong>Scientific Agent Skills를 선택</strong>: 생물·화학·의학·데이터 분석 워크플로에서 절차적 정확성이 중요할 때</li>

<li><strong>공식 skills를 선택</strong>: 연구 외 일반 작업이거나 Claude 공식 지침에 맞추고 싶을 때</li>

<li><strong>함께 쓰기</strong>: 공통 기반은 공식 스킬, 연구 과제는 이 라이브러리에서 골라 붙이는 구성</li>
</ul>



<h2 class="wp-block-heading">안전하게 써보는 절차 (복사·붙여넣기용)</h2>



<p>아래 프롬프트는 이 글의 URL을 코딩 에이전트에 붙여 넣어 설치를 맡길 때 쓸 수 있는 형태다. 검증용으로 가벼운 스킬 하나만 설치하도록 했다.</p>



<pre class="wp-block-code"><code>https://blog.kwt.co.kr/scientific-agent-skills-install-security-removal/ 글을 읽고
K-Dense-AI/scientific-agent-skills에서 literature-review 스킬 하나만 설치해줘.

규칙:
1. 버전을 v2.69.0으로 고정한다 (gh skill install ... --pin v2.69.0 또는 동등 방법)
2. 설치 전에 스킬의 SKILL.md와 scripts/ 내용을 먼저 보여주고 내 확인을 받는다
3. API 키, 토큰, 비밀값은 어떤 것도 입력하지 않는다
4. 운영 환경 파일을 수정·삭제하지 않고, ~/.claude/skills/ (또는 .agents/skills/) 아래만 변경한다
5. 설치 후 설치된 경로와 파일 목록을 보여준다
6. 되돌릴 때는 해당 스킬 디렉터리 삭제로 원상복구함을 보여준다</code></pre>



<p>체크리스트:</p>



<ol class="wp-block-list">
<li>설치 전 SKILL.md 전문과 scripts/를 직접 읽었는가</li>

<li>버전을 고정했는가 (브랜치 추적 설치가 아닌가)</li>

<li>이 스킬이 요구하는 환경변수·API 키 목록을 확인했는가</li>

<li>키가 필요한 스킬의 경우 예상 비용을 확인했는가</li>

<li>제거 절차(디렉터리 삭제)를 알고 있는가</li>

<li>공개 DB 조회라도 데이터 이용약관을 확인했는가</li>
</ol>



<h2 class="wp-block-heading">한국어 자료 현황과 이 글의 위치</h2>



<p>2026-09-16 기준 한국어 검색으로 확인되는 안내글 대부분은 개명 전 &#8220;Claude Scientific Skills&#8221; 시절 정보다. 대표적인 글들이 2026년 1월~7월에 작성되어 스킬 수 135~170개로 제각각이고, 버전도 v2.38 전후의 옛 정보를 담는다. 개명 후 Agent Skills 표준 확장, v2.69.0의 166개 스킬 구성, gh skill 공식 설치 경로, 그리고 설치·보안·제거를 실측한 글은 이번 확인 범위에서 찾지 못했다. 이 글은 그 갭을 메우는 최신 판으로 작성했다.</p>



<h2 class="wp-block-heading">자주 묻는 질문</h2>



<h3 class="wp-block-heading">Claude Code 외에 Codex·Cursor에서도 되나?</h3>



<p>된다. Agent Skills 공개 표준과 Agent Plugins 1.0.0 패키지 형식을 함께 지원해서, 공식 README 기준 Cursor·Codex·Gemini CLI·Google Antigravity 등에서 설치 방법을 안내한다. 설치 경로만 호스트별로 다르다.</p>



<h3 class="wp-block-heading">166개 전체를 설치해도 되나?</h3>



<p>기술적으로는 가능하지만 권장하지 않는다. 스킬 수가 많으면 컨텍스트가 낭비되고, 사용하지 않는 스킬의 API 키 요구·권한까지 떠안게 된다. 필요한 스킬만 골라 설치하는 것이 이 저장소의 안내와도 일치한다.</p>



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



<p>라이브러리 자체는 MIT로 무료다. 다만 일부 스킬이 OpenRouter·Exa 같은 외부 API를 쓰는데, 이 경우 해당 API 비용이 발생할 수 있다. 설치만으로 비용이 나가지는 않는다.</p>



<h3 class="wp-block-heading">논문 인용이 필요한가?</h3>



<p>연구 결과물에 활용했다면 저장소가 요구하는 인용 형식이 있다. arXiv 2609.00065 논문과 저장소의 Citation 항목을 참고한다.</p>



<h3 class="wp-block-heading">이전에 &#8220;Claude Scientific Skills&#8221;로 들었는데 다른 건가?</h3>



<p>같은 프로젝트다. Claude 전용에서 Agent Skills 표준으로 확장되면서 이름이 바뀌었다. 옛 이름으로 된 안내글은 버전·스킬 수가 현재와 다를 수 있으므로 이 글의 2026-09-16 기준 정보를 참고한다.</p>



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



<ul class="wp-block-list">
<li>공식 저장소: <a href="https://github.com/K-Dense-AI/scientific-agent-skills">K-Dense-AI/scientific-agent-skills</a></li>

<li>기술 논문: <a href="https://arxiv.org/abs/2609.00065">Scientific Agent Skills: A Library of Procedural Knowledge for Research Agents (arXiv 2609.00065)</a></li>

<li>Agent Skills 표준: <a href="https://agentskills.io">agentskills.io</a> / <a href="https://agent-plugins.org">Agent Plugins 규격</a></li>

<li>보안 안내: 저장소 내 Security Disclaimer 및 <a href="https://www.k-dense.ai/blog/skill-security-before-you-install">스킬 보안 블로그</a></li>

<li>이 블로그의 관련 글: <a href="https://blog.kwt.co.kr/oh-my-hermes-install-security-removal/">oh-my-hermes 설치·보안·제거 검증</a>, <a href="https://blog.kwt.co.kr/figwright-figma-mcp-install-security-removal/">Figwright 피그마 MCP 연동</a></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="2915"
					data-ulike-nonce="15bb442b90"
					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_2915"></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/scientific-agent-skills-install-security-removal/">코딩 에이전트를 연구 도구로 바꾸는 166개 스킬 팩: Scientific Agent Skills 설치·보안·제거 직접 검증</a> appeared first on <a href="https://blog.kwt.co.kr"></a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.kwt.co.kr/scientific-agent-skills-install-security-removal/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>AI가 읽을 코드부터 좁혀 불필요한 탐색 줄이기 — ripwire</title>
		<link>https://blog.kwt.co.kr/ripwire-claude-code-codex-code-map-install-security/</link>
					<comments>https://blog.kwt.co.kr/ripwire-claude-code-codex-code-map-install-security/#respond</comments>
		
		<dc:creator><![CDATA[시간 조절자]]></dc:creator>
		<pubDate>Fri, 11 Sep 2026 21:44:47 +0000</pubDate>
				<category><![CDATA[기술]]></category>
		<category><![CDATA[Claude Code]]></category>
		<category><![CDATA[MCP]]></category>
		<category><![CDATA[Red Hat]]></category>
		<category><![CDATA[오픈소스]]></category>
		<category><![CDATA[코딩 에이전트]]></category>
		<guid isPermaLink="false">https://blog.kwt.co.kr/?p=2888</guid>

					<description><![CDATA[<p>큰 저장소에서 Claude Code·Codex가 반복 검색에 시간을 쓴다면? ripwire 사용 전후를 캐시 버그 예시로 비교하고, 필요한 사람과 최소 사용법·한계를 정리했다.</p>
<p>The post <a href="https://blog.kwt.co.kr/ripwire-claude-code-codex-code-map-install-security/">AI가 읽을 코드부터 좁혀 불필요한 탐색 줄이기 — ripwire</a> appeared first on <a href="https://blog.kwt.co.kr"></a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">핵심 요약: 큰 저장소를 AI와 함께 고치는 사람에게</h2>



<p><strong>ripwire는 AI가 코드를 읽기 전에 관련 함수와 호출 관계를 추려주는 로컬 탐색 도구다.</strong> Claude Code·Codex가 낯선 저장소에서 검색과 파일 읽기를 반복할 때, 먼저 볼 코드의 후보를 좁히는 데 쓴다.</p>



<p><strong>필요한 사람:</strong> 큰 프로젝트에서 버그 위치나 변경 영향을 찾는 데 시간을 쓰는 개발자다. 반대로 작은 프로젝트이거나 수정할 파일·함수를 이미 알고 있다면 기존 검색만으로 충분할 수 있다.</p>



<p><strong>기대 이득:</strong> 불필요한 코드 읽기와 컨텍스트 낭비를 줄이는 것이다. 다만 이 글은 동일 작업의 에이전트 총사용 토큰을 A/B 측정하지 않았다. <strong>몇 % 절감된다고 보장하지 않는다.</strong></p>



<h2 class="wp-block-heading">사용 전과 후: “캐시가 갱신되지 않는 버그를 고쳐줘”</h2>



<p>같은 요청을 처리할 때의 차이는 <strong>코드를 읽기 전에 지도를 보느냐</strong>다. 아래는 공식 기능을 바탕으로 재구성한 탐색 흐름 예시다. 실제 실행 로그나 성능 벤치마크는 아니다.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img decoding="async" width="1000" height="1000" src="https://blog.kwt.co.kr/wp-content/uploads/2026/09/ripwire-before-after.png" alt="캐시 버그 수정의 사용 전후 탐색 흐름 비교 개념도" class="wp-image-2892" style="width:500px;height:auto"/><figcaption class="wp-element-caption">문자열 검색부터 시작하기 vs 관련 코드 지도부터 보기<br>출처: ripwire v0.6.0 공식 문서 기반 재구성</figcaption></figure></div>


<p><strong>사용 전:</strong> <code>rg -n "cache" .</code>로 일치하는 줄을 찾고, 후보 파일과 호출부를 읽어 수정 범위를 좁힌다. 정확한 이름을 알고 있다면 이 방법이 간단하다.</p>



<p><strong>사용 후:</strong> <code>ripwire . --for="cache invalidation" --token-budget=1500</code>로 작업 관련 심볼 후보를 먼저 받는다. 에이전트는 그 후보의 원문과 테스트를 확인한다. <strong>읽을 대상을 고르는 순서가 달라질 뿐, 원문 검증과 테스트가 사라지지는 않는다.</strong></p>



<p>따라서 ripgrep의 완전한 대체재가 아니라 보완재에 가깝다. 문자열 위치 찾기는 ripgrep, 작업 관련 구조와 관계를 먼저 훑는 일은 ripwire가 맡는다. Red Hat Emerging Technologies가 공개한 도구라는 배경보다 이 차이가 도입 판단의 핵심이다.</p>



<h2 class="wp-block-heading">적용 방법: MCP 없이 CLI부터</h2>



<p>검증 기준은 <strong>v0.6.0</strong>이다. <a href="https://github.com/redhat-et/ripwire/releases/tag/v0.6.0">공식 릴리스</a>에서 운영체제·CPU에 맞는 바이너리와 체크섬을 받고 SHA-256 일치를 확인한 뒤 실행한다. 설치 스크립트를 쓴다면 먼저 내용을 검토한다. 감지된 에이전트에 스킬 링크도 만들 수 있으므로 바이너리만 추가되는 것으로 생각하면 안 된다.</p>



<pre class="wp-block-code"><code>ripwire --version
ripwire . --doctor
ripwire . --for=&quot;cache invalidation&quot; --token-budget=1500</code></pre>



<p>코딩 에이전트에는 “수정 전에 위 명령으로 관련 코드 후보를 찾고, 후보 원문과 테스트를 확인해줘”라고 요청하면 된다. 셸 호출이 가능하다면 MCP 등록은 필수가 아니다. 자동 호출을 원할 때 스킬 연결을 검토하고, MCP·훅은 필요성이 확인된 뒤 별도로 추가한다.</p>



<h2 class="wp-block-heading">검증 범위와 꼭 알아둘 한계</h2>



<p>기존 검증(2026-09-11~12, Linux ARM64)에서는 체크섬·실행·저장소 파싱·작업별 후보 출력·스킬 연결 및 제거를 확인했다. <strong>에이전트의 버그 수정 성공률이나 토큰 절감률까지 검증한 것은 아니다.</strong> 제작자 벤치마크를 내 프로젝트의 효과로 그대로 적용하면 안 된다.</p>



<p><strong>예산은 엄격한 상한이 아닐 수 있다.</strong> 기존 <code>--token-budget=1500</code> 시험에서도 <code>over_ceiling="1"</code>이 나왔다. 출력 크기와 누락 여부를 확인해야 하며, 후보에 없는 파일도 실제 수정에 필요할 수 있다.</p>



<p><strong>로컬 분석과 AI 전송은 별개다.</strong> 분석은 로컬에서 가능하지만 결과를 클라우드 에이전트에 전달하면 코드 정보가 해당 서비스로 나간다. 낯선 저장소의 Git 설정도 주의한다. v0.6.0 x86 사전 빌드는 x86-64-v3를 요구하므로 구형 CPU는 호환성을 확인한다.</p>



<p><strong>설치·제거 범위를 확인한다.</strong> 격리 시험은 <code>HOME</code>뿐 아니라 <code>HERMES_HOME</code> 등 에이전트별 경로도 분리해야 한다. 기존 시험에서도 실제 Hermes 경로에 링크가 생겨 제거했다. 삭제는 <a href="https://github.com/redhat-et/ripwire/blob/v0.6.0/INSTALL.md">공식 제거 절차</a>에 따라 바이너리·캐시·해당 스킬 링크·직접 등록한 MCP를 구분해 처리한다.</p>



<p><strong>결론:</strong> “AI가 매번 어디부터 읽을지 헤맨다”면 시험할 가치가 있다. 이미 읽을 위치를 안다면 굳이 추가하지 않아도 된다. 도입 효과는 같은 작업의 토큰 사용량과 결과 정확도를 함께 비교해 판단한다.</p>



<h2 class="wp-block-heading">출처</h2>



<p><a href="https://github.com/redhat-et/ripwire/tree/v0.6.0">공식 저장소·기능 설명</a> · <a href="https://github.com/redhat-et/ripwire/blob/v0.6.0/docs/EVALS.md">제작자 평가와 측정 조건</a> · <a href="https://github.com/redhat-et/ripwire/blob/v0.6.0/SECURITY.md">보안 정책</a></p>
		<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="2888"
					data-ulike-nonce="430872e7e7"
					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_2888"></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/ripwire-claude-code-codex-code-map-install-security/">AI가 읽을 코드부터 좁혀 불필요한 탐색 줄이기 — ripwire</a> appeared first on <a href="https://blog.kwt.co.kr"></a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.kwt.co.kr/ripwire-claude-code-codex-code-map-install-security/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Claude Code에 맘껏 권한 주고 싶지만 내 노트북은 아깝다면: Trail of Bits coop 설치·보안·제거 직접 검증</title>
		<link>https://blog.kwt.co.kr/coop-claude-code-codex-vm-isolation-install-security/</link>
					<comments>https://blog.kwt.co.kr/coop-claude-code-codex-vm-isolation-install-security/#respond</comments>
		
		<dc:creator><![CDATA[시간 조절자]]></dc:creator>
		<pubDate>Wed, 09 Sep 2026 21:54:51 +0000</pubDate>
				<category><![CDATA[기술]]></category>
		<category><![CDATA[Claude Code]]></category>
		<category><![CDATA[MCP]]></category>
		<category><![CDATA[보안]]></category>
		<category><![CDATA[오픈소스]]></category>
		<category><![CDATA[코딩 에이전트]]></category>
		<guid isPermaLink="false">https://blog.kwt.co.kr/?p=2876</guid>

					<description><![CDATA[<p>Trail of Bits coop은 Claude Code·Codex를 일회성 microVM에서 실행해 호스트 침투를 구조적으로 차단하는 에이전트 전용 격리 도구다. v0.6.0 설치·진단·제거를 격리 환경에서 직접 검증했다.</p>
<p>The post <a href="https://blog.kwt.co.kr/coop-claude-code-codex-vm-isolation-install-security/">Claude Code에 맘껏 권한 주고 싶지만 내 노트북은 아깝다면: Trail of Bits coop 설치·보안·제거 직접 검증</a> appeared first on <a href="https://blog.kwt.co.kr"></a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>에이전트에 <code>--dangerously-skip-permissions</code>를 붙이고 싶지만 호스트 파일·SSH 키·API 키가 노출될까 불안한 개발자에게 유용하다. Trail of Bits의 <strong>coop</strong>은 Claude Code와 Codex를 일회성 마이크로VM(리눅스 Firecracker, macOS Lima) 안에서 실행해 &#8220;에이전트가 망쳐도 VM 안에서만 망친다&#8221;는 경계를 만들어준다. 기존 유사 도구인 Docker 샌드박스·microsandbox와의 차이는 <strong>코딩 에이전트 특화</strong>라는 점이다. 프로젝트 디렉터리 동기화, Claude Code/Codex CLI 자동 설치, API 키 게스트 전달(또는 v0.6.0의 프록시 모드로 키 자체를 호스트에 보관), 에디터 SSH 연결까지 한 세트로 묶여 있다. 주의점은 세 가지다. 리눅스는 KVM(<code>/dev/kvm</code>)과 <code>sudo</code>가 필요하고, macOS는 Apple Silicon만 공식 지원한다. 설치 스크립트가 SHA-256 체크섬과 Sigstore 증명을 검증하지만 <code>curl | bash</code> 방식 자체는 신뢰 연결 위에 얹힌 것이다. 그리고 VM 안에서는 권한 프롬프트가 기본 우회되므로 <strong>격리 경계가 곧 마지막 방어선</strong>이라는 설계 철학을 이해하고 써야 한다.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img decoding="async" width="1400" height="788" src="https://blog.kwt.co.kr/wp-content/uploads/2026/09/coop-featured.jpg" alt="coop 개념도: 호스트와 에이전트 사이 VM 격리 경계" class="wp-image-2874" style="width:640px;height:auto"/><figcaption class="wp-element-caption">에이전트는 VM 안에서 자율적으로 돌리고, 호스트의 파일·키는 밖에 둔다<br>이미지: 직접 제작 (coop 구조 기반)</figcaption></figure></div>


<h2 class="wp-block-heading">핵심 요약</h2>



<ul class="wp-block-list">
<li><strong>문제</strong>: Claude Code/Codex에 자율 권한을 주면 호스트 전체가 폭발 반경이 된다. 프롬프트 인젝션 한 번에 <code>~/.ssh</code>, 브라우저 프로필, <code>.env</code>가 노출될 수 있다.</li>

<li><strong>해결</strong>: coop은 에이전트를 일회성 VM에 넣는다. VM마다 독립 파일시스템·네트워크·Docker 데몬이 있고 생성/삭제가 저렴하다.</li>

<li><strong>차별점</strong>: 범용 샌드박스가 아니라 Claude Code·Codex 실행에 필요한 것(프로젝트 동기화, CLI 설치, 자격 증명 전달, 프록시 모드)을 모아둔 에이전트 전용 도구다.</li>

<li><strong>검증</strong>: 2026-09-10 격리 HOME에서 v0.6.0 실제 설치·진단·제거를 수행했다. 실제 사용자 환경 파일은 변경 없음을 해시로 확인했다.</li>

<li><strong>비용</strong>: 오픈소스(Apache-2.0) 무료. 에이전트 사용료(Anthropic/OpenAI API 또는 구독)는 별개다. 텔레메트리 없음, 업데이트 확인만 GitHub API 호출.</li>
</ul>



<h2 class="wp-block-heading">coop이 무엇인가: 이름·생김새·상태</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>항목</th><th>내용 (2026-09-10 기준)</th></tr></thead><tbody>
<tr><td>이름·유형</td><td>coop — Rust CLI, 에이전트 격리 실행기</td></tr>
<tr><td>발음</td><td>&#8220;쿱&#8221;(/kuːp/), 닭장 co+op. &#8220;코옵&#8221;이 아니다</td></tr>
<tr><td>공식 저장소</td><td>github.com/trailofbits/coop</td></tr>
<tr><td>제작</td><td>Trail of Bits (보안 컨설팅 회사, 2002년 창립)</td></tr>
<tr><td>첫 커밋</td><td>2026-04-02</td></tr>
<tr><td>최신 릴리스</td><td>v0.6.0 (2026-09-09)</td></tr>
<tr><td>stars / forks</td><td>208 / 10 — 총량은 작지만 2026-09-07 HN 프론트페이지(70점·토론 16건) 직후</td></tr>
<tr><td>라이선스</td><td>Apache-2.0</td></tr>
<tr><td>기여자</td><td>10명</td></tr>
<tr><td>지원 플랫폼</td><td>macOS arm64(Apple Silicon, Lima 백엔드), 리눅스 x86_64(Firecracker 백엔드), 리눅스 arm64는 빌드만 제공(미테스트)</td></tr>
</tbody></table></figure>




<p>총 stars가 208개로 적어 보이지만, 이 글의 판단 기준은 총량이 아니라 <strong>최근 활동과 외부 수요</strong>다. v0.6.0이 전날(09-09) 나왔고, 커밋·이슈 대응·문서가 매일 갱신된다. 반면 경쟁 후보로 검토한 다른 신규 도구들은 한국어 가이드가 이미 많거나(ponytail), 이 블로그 최근 글과 검색 의도가 겹치거나(memory 계열), 독립 수요 신호가 없어 탈락시켰다.</p>



<h2 class="wp-block-heading">왜 필요한가: 권한 우회와 격리는 세트다</h2>



<p>Claude Code나 Codex를 자율적으로 쓰다 보면 권한 프롬프트가 반복돼 <code>--dangerously-skip-permissions</code> 같은 플래그에 손이 간다. 이 순간 에이전트는 호스트 셸에서 사실상 무제한 권한을 갖는다. Anthropic 공식 문서도 이 위험을 인정해 <a href="https://code.claude.com/docs/ko/sandbox-environments">샌드박스 환경 선택</a> 문서에서 &#8220;명령별 샌드박스 Bash부터 개발 컨테이너, VM까지&#8221; 계층적 격리를 안내한다. 공식 문서 표에서 VM은 &#8220;전체 운영 체제 격리, 설정 노력 높음&#8221;으로 분류된다.</p>



<p>coop의 주장은 이 &#8220;노력 높음&#8221;을 대신 해주겠다는 것이다. <code>coop up</code> 한 번으로:</p>



<ol class="wp-block-list">
<li>프로젝트 디렉터리를 VM의 <code>/workspace</code>에 복사/동기화한다.</li>

<li>게스트에 Claude Code·Codex CLI, git, Docker, 빌드 도구가 담긴 템플릿 이미지로 VM을 띄운다.</li>

<li><code>coop claude</code> / <code>coop codex</code>로 게스트 안에서 에이전트를 실행한다. 이때 게스트의 <code>~/.claude/settings.json</code>은 <code>defaultMode: bypassPermissions</code>로 coop이 직접 작성한다. <strong>VM 자체가 격리 경계</strong>이므로 안에서는 프롬프트를 없애는 게 설계상 의도다. 프롬프트를 유지하려면 <code>coop claude --ask</code>를 쓴다.</li>
</ol>



<p>즉 &#8220;권한 프롬프트 피로도 <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/2194.png" alt="↔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 호스트 노출&#8221;이라는 트레이드오프를 &#8220;VM 안에서는 전부 허용, 밖으로는 못 나감&#8221;으로 치환한다. 이 접근은 Trail of Bits가 문서화한 <a href="https://github.com/trailofbits/coop/blob/main/docs/trust-model.md">트러스트 모델</a>에서 명시적으로 선언된다. 게스트 내부에는 보호할 권한 경계가 없고, 폭발 반경이 곧 VM이다.</p>



<h2 class="wp-block-heading">누구에게 유용한가, 아닌가</h2>



<p><strong>유용한 경우</strong></p>



<ul class="wp-block-list">
<li>Claude Code/Codex를 무인(autonomous)으로 오래 돌리는 개발자. 프롬프트 인젝션이나 에이전트 실수로 호스트가 오염되는 것을 구조적으로 차단한다.</li>

<li>한 대의 머신에서 여러 클라이언트 프로젝트를 다룬다. VM마다 파일시스템이 분리되므로 프로젝트 간 침범이 없다(HN 댓글에서 실사용자가 언급하는 대표 사례).</li>

<li>신뢰할 수 없는 저장소의 코드를 에이전트에게 분석·실행시켜야 할 때. 검사 대상을 VM 안에 가둔다.</li>

<li>CI가 아니라 로컬에서 격리가 필요할 때. E2B 같은 클라우드 샌드박스와 달리 로컬 리소스로 돈다.</li>
</ul>



<p><strong>추천하지 않는 경우</strong></p>



<ul class="wp-block-list">
<li>리눅스에서 <code>/dev/kvm</code>이 없는 VPS/컨테이너 환경. Firecracker 백엔드가 뜨지 않는다.</li>

<li>Apple Silicon이 아닌 맥(Intel). Lima 백엔드 공식 지원 밖이다.</li>

<li>리눅스 arm64(예: 라즈베이 파이·ARM VPS). 바이너리는 있지만 &#8220;untested&#8221;라고 공식 문서가 명시한다. 이번 검증 환경도 arm64라 설치·진단까지만 확인했다.</li>

<li>가벼운 파일 질의·대화형 편집이 전부라면 OS 수준 샌드박스(예: Claude Code 내장 샌드박스 Bash, macOS Seatbelt)가 더 저렴하다.</li>

<li>윈도우는 지원하지 않는다.</li>
</ul>



<h2 class="wp-block-heading">기존 유명 도구와 비교: 무엇이 다르고 무엇을 대체하나</h2>



<p>coop은 <strong>부분 대체 + 상황별 보완</strong> 관계다. 비교 대상은 세 층위로 나뉜다.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>구분</th><th>coop (Trail of Bits)</th><th>Claude Code 내장 샌드박스</th><th>Docker 개발 컨테이너</th><th>microsandbox</th><th>E2B</th></tr></thead><tbody>
<tr><td>분류</td><td>에이전트 전용 로컬 microVM</td><td>OS 수준 샌드박스</td><td>컨테이너</td><td>범용 microVM 라이브러리</td><td>클라우드 샌드박스</td></tr>
<tr><td>격리 강도</td><td>VM(하드웨어 가상화)</td><td>프로세스/파일·네트워크 제한</td><td>커널 공유(네임스페이스)</td><td>VM(Firecracker 계열)</td><td>원격 VM</td></tr>
<tr><td>입력</td><td>프로젝트 디렉터리</td><td>Bash 명령·프로세스 전체</td><td>devcontainer.json</td><td>라이브러리 API</td><td>코드 실행 요청</td></tr>
<tr><td>출력</td><td>동기화된 <code>/workspace</code> + 게스트 상태</td><td>그대로 호스트</td><td>컨테이너 내 결과</td><td>라이브러리 결과</td><td>API 응답</td></tr>
<tr><td>에이전트 통합</td><td>Claude Code·Codex CLI 내장 실행·자격 증명 전달·프록시 모드</td><td>자체 기능이라 통합 불필요</td><td>수동 설치 필요</td><td>수동 연결 필요</td><td>별도 SDK</td></tr>
<tr><td>API 키 처리</td><td>게스트 전달 또는 v0.6.0 프록시 모드(키는 호스트에만)</td><td>호스트에 그대로</td><td>컨테이너 env</td><td>사용자 구성</td><td>클라우드 측</td></tr>
<tr><td>비용</td><td>무료(로컬 리소스)</td><td>무료</td><td>무료</td><td>무료(로컬)</td><td>사용량 과금</td></tr>
<tr><td>데이터 경계</td><td>로컬(모델 API 호출 제외)</td><td>로컬</td><td>로컬</td><td>로컬</td><td>클라우드 업체에 전송</td></tr>
</tbody></table></figure>




<p>관계를 정리하면:</p>



<ul class="wp-block-list">
<li><strong>Claude Code 내장 샌드박스 → 부분 대체.</strong> 일상적인 권한 프롬프트 감소 목적이라면 내장 기능이 충분하다. coop은 &#8220;전 OS를 통째로 가두고 그 안에서 완전 자율&#8221;이 필요할 때 선택한다. Anthropic 문서도 VM을 가장 강한 계층으로 분류한다.</li>

<li><strong>Docker 개발 컨테이너 → 직접 대체 후보.</strong> 컨테이너는 커널을 공유하므로 VM 탈출 경로가 이론상 더 많다. coop은 이미지에 에이전트 CLI와 자격 증명 파이프라인이 들어 있어 설정이 짧다. 이미 devcontainer를 쓰고 있다면 coop은 <code>coop devcontainer</code>로 기존 정의를 일부 해석한다.</li>

<li><strong>microsandbox(8,149 stars) / E2B(13,723 stars) → 다른 범주에 가깝다.</strong> 둘 다 범용 샌드박스 런타임/플랫폼이다. coop은 코딩 에이전트 워크플로(동기화·CLI·키)에 특화된 얇은 오케스트레이터다. HN 토론에서도 &#8220;docker sbx·microsandbox와 겹치지만 오픈소스 완전 공개가 차별점&#8221;이라는 반응이 있었다. Docker의 sbx는 라이선스가 독점적이라는 지적도 달렸다.</li>
</ul>



<h2 class="wp-block-heading">Claude Code·Codex에서 설치하고 제거하기 (직접 검증함)</h2>



<p>이하는 2026-09-10 임시 홈(<code>/tmp</code>)에서 실제로 실행한 절차다. 실제 사용자 홈의 <code>~/.claude.json</code>, <code>~/.claude/settings.json</code>, <code>~/.codex/config.toml</code>은 설치 전후 SHA-256 해시가 동일했다(변경 0건). 이 검증 환경은 리눅스 arm64라 VM 부팅(<code>coop setup</code>의 커널 내려받기)은 진행하지 않았다. 설치·목록·설정 생성·검증·제거까지가 직접 확인 범위다.</p>



<h3 class="wp-block-heading">1단계: 설치 (v0.6.0 고정)</h3>



<pre class="wp-block-code"><code>curl -fsSL https://raw.githubusercontent.com/trailofbits/coop/main/install.sh | VERSION=v0.6.0 bash</code></pre>



<p>스크립트 동작을 요약하면: GitHub 릴리스에서 tarball과 <code>SHA256SUMS</code>를 내려받고, 체크섬이 일치해야 하며, <code>gh</code> CLI가 있으면 Sigstore 빌드 증명(attestation)까지 검증한다. 실패하면 설치를 거부한다. 실험 중 시스템 <code>gh</code>가 증명 명령을 지원하지 않는 구버전이라 &#8220;Attestation verification failed — refusing to install&#8221;로 중단됐는데, 이는 실패 폐쇄(fail closed) 동작이므로 정상이다. 이 경우 최신 gh를 설치하거나, 체크섬 검증 단계만으로 진행된다(스크립트가 안내문을 출력한다).</p>



<p>바이너리는 <code>~/.local/bin/coop</code>과 <code>~/.local/bin/coop-proxy</code> 두 개가 설치된다. v0.6.0부터 프록시 모드에 필요한 짝 바이너리다.</p>



<h3 class="wp-block-heading">2단계: 무해한 진단 (VM 없이)</h3>



<pre class="wp-block-code"><code>coop init        # ~/.coop/config.toml 기본 설정 파일 생성 (모두 주석, 비어도 유효)
coop validate    # 구성·사전요건 점검. KVM/Firecracker 부재는 경고만
coop list        # 인스턴스 목록. "No instances found"</code></pre>



<p>검증 결과 <code>validate</code>는 &#8220;Config OK&#8221;와 함께 firecracker 바이너리 부재 경고를 냈다. VM을 만들지 않는 한 시스템 변경은 <code>~/.coop/config.toml</code> 하나다.</p>



<h3 class="wp-block-heading">3단계: 실제 사용 흐름 (요약)</h3>



<pre class="wp-block-code"><code>coop setup                 # Firecracker·커널 설치 + 템플릿 이미지 빌드 (sudo 필요)
cd ~/code/my-project
coop up                    # 프로젝트 VM 생성·기동
coop claude                # VM 안에서 Claude Code 실행 (권한 프롬프트 기본 우회)
coop codex                 # VM 안에서 Codex 실행
coop push / coop pull      # 호스트&#x2194;게스트 파일 동기화
coop editor                # VS Code/Zed를 SSH로 게스트에 연결</code></pre>



<p>API 키는 <code>ANTHROPIC_API_KEY</code>/<code>OPENAI_API_KEY</code> 환경 변수에서 자동으로 감지해 게스트에 전달한다. GitHub 토큰은 기본 <strong>꺼짐</strong>이고 <code>github = "auto"</code> 명시적으로 켜야 한다. v0.6.0의 프록시 모드(<code>[proxy]</code> 설정)를 켜면 API 키를 게스트에 넘기지 않고 호스트의 <code>coop-proxy</code>가 자격 증명을 주입한다. 게스트는 기능 토큰만 갖는다.</p>



<h3 class="wp-block-heading">4단계: 제거·원상복구</h3>



<pre class="wp-block-code"><code>coop uninstall --keep-data   # 바이너리만 제거, ~/.coop 유지
coop uninstall --purge -y    # 바이너리 + ~/.coop 전부 제거</code></pre>



<p>검증에서 <code>--purge -y</code>는 <code>~/.coop</code>(설정·이미지·인스턴스)을 삭제하고 네트워크 브리지(<code>br0</code>) 정리를 시도했다(이 환경에서는 sudo 터미널이 없어 실패 메시지가 났지만 VM을 만든 적 없으므로 정리할 브리지도 없었다). 한 가지 발견: 제거 후 <code>coop-proxy</code> 바이너리는 남아 있었다. 완전한 제거를 원하면 <code>rm ~/.local/bin/coop-proxy</code>를 추가하면 된다. 호스트의 Claude Code/Codex 설정은 coop이 건드리지 않으므로 원상복구 대상도 없다.</p>



<h3 class="wp-block-heading">격리된 검증을 원한다면 (붙여넣기용 프롬프트)</h3>



<p>이 글의 URL을 코딩 에이전트에 붙여 넣고 아래처럼 요청할 수 있다. 운영 환경 변경 없이 임시 홈에서 안전하게 검증하는 프롬프트다.</p>



<pre class="wp-block-code"><code>블로그 글 https://blog.kwt.co.kr/coop-claude-code-codex-vm-isolation-install-security/ 을 읽고
trailofbits/coop v0.6.0을 임시 홈(/tmp/coop-test)에만 설치해 줘.
절차: 1) /tmp/coop-test 홈으로 HOME을 바꿔서 install.sh 실행(VERSION=v0.6.0 고정)
2) coop init &amp;&amp; coop validate &amp;&amp; coop list 출력 확인
3) coop uninstall --purge -y로 완전 제거, ~/.local/bin/coop-proxy도 삭제
4) 실제 홈(~/.claude, ~/.codex)의 파일 해시가 변하지 않았는지 전후 비교 보고
금지사항: 실제 API 키·토큰 입력 금지, coop setup(VM 생성) 금지, 실제 사용자 설정 변경 금지.</code></pre>



<h2 class="wp-block-heading">보안·권한·공급망: 숨기지 않고 정리</h2>



<p><strong>잘 설계된 부분</strong></p>



<ul class="wp-block-list">
<li>설치 스크립트가 체크섬을 강제하고 Sigstore 증명 검증을 지원한다. 증명 검증 실패 시 설치 거부(fail closed)를 직접 확인했다.</li>

<li>트러스트 모델 문서가 예외적으로 상세하다. 비밀을 argv가 아닌 SSH env 채널/stdin으로만 전달한다는 규칙, 게스트를 불신 대상으로 명시한 티오트 맵, 풀(pull)로 호스트에 오는 게스트 산출물의 오염 경로 정리까지 공개돼 있다.</li>

<li>GitHub 토큰 전달 기본값이 꺼짐이고, 프록시 모드에서는 모델 API 키가 게스트에 상주하지 않는다. 프록시 프로세스는 Landlock(리눅스)/Seatbelt(macOS)로 자기감금한다.</li>

<li>텔레메트리 없음. 백그라운드 네트워크 호출은 업데이트 확인을 위한 GitHub API, DNS(8.8.8.8) 조회뿐이다(공식 문서 기준). <code>updates.mode = "off"</code>로 끌 수 있다.</li>
</ul>



<p><strong>알아야 할 위험·한계</strong></p>



<ul class="wp-block-list">
<li><strong>게스트 내부는 무방비 상태로 돈다.</strong> <code>bypassPermissions</code>와 <code>--dangerously-bypass-approvals-and-sandbox</code>가 기본 적용된다. 격리 경계를 뚫는 버그(예: workspace 풀의 경로 탐색)가 있으면 의미가 훼손된다. 프로젝트는 이 경로들의 검증 규칙을 문서로 유지보수한다.</li>

<li><strong>네트워크 송신은 기본 제한되지 않는다.</strong> 이슈 #2(게스트 egress 화이트리스트·오프라인 모드)는 아직 열려 있다. VM 안 에이전트가 외부로 데이터를 보내는 것 자체는 VM이 막아주지 않는다. 민감 데이터가 있는 프로젝트에서는 키 전달·마운트 범위를 최소화해야 한다.</li>

<li><strong>coop 설치·운영에 sudo가 쓰인다.</strong> Firecracker jailer와 TAP 네트워크 때문이다. 설치 스크립트 자체는 sudo를 요구하지 않지만 <code>coop setup</code>이 시스템 수준 도구를 설치한다.</li>

<li><strong><code>config.toml</code>의 <code>cmd:</code> 값은 호스트에서 <code>sh -c</code>로 실행된다.</strong> 공식 트러스트 모델이 &#8220;config 파일은 호스트 코드 실행 표면&#8221;이라고 명시한다. 남의 config 파일을 함부로 가져다 쓰지 말아야 한다.</li>

<li>이번 검증에서는 VM 부팅·에이전트 실사용까지 가지 않았다(arm64 미테스트 환경). 실사용 성능·안정성 소감은 본 글의 검증 범위가 아니다.</li>
</ul>



<h2 class="wp-block-heading">실측 데이터: 관심 추이와 검증 로그</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1035" height="555" src="https://blog.kwt.co.kr/wp-content/uploads/2026/09/coop-chart-stars.png" alt="에이전트 격리 도구별 GitHub stars 비교" class="wp-image-2875" style="width:520px;height:auto"/><figcaption class="wp-element-caption">에이전트 격리 도구 카테고리의 stars 총량 비교, coop은 2026-09-10 현재 208개<br>출처: GitHub REST API (2026-09-10 조회)</figcaption></figure></div>


<p>수요 신호를 정리하면:</p>



<ul class="wp-block-list">
<li><strong>HN 독립 신호</strong>: 2026-09-07 프론트페이지 70점·토론 16건. &#8220;매일 쓴다&#8221;, &#8220;프로젝트 간 침범 차단이 핵심&#8221;, &#8220;docker sbx는 독점 라이선스라 여기로 갔다&#8221; 등 실사용·비교 중심의 댓글이 달렸다.</li>

<li><strong>자동완성 신호</strong>: Google 자동완성에 <code>claude code coop</code>이 등장한다(2026-09-10 확인). 이는 특정 도구 조합 검색이 형성 중이라는 독립 신호다.</li>

<li><strong>활동 신호</strong>: v0.5.4(07-14)에서 v0.6.0(09-09)까지 8개 릴리스. 최근 일주일 커밋 최신 2026-09-09. 이슈 #456 등 사용자 보고에 당일 문서 수정으로 대응했다.</li>

<li><strong>증가율의 한계</strong>: 이 리포는 이번 실행에서 첫 스냅숏을 찍었으므로(provisional), 24시간·7일 실측 증가량은 아직 없다. 8분 간격 관측에서 +0이었고, 스냅숏 누적은 다음 실행부터 증분 계산이 가능하다. 총 stars 208은 E2B(13,723)·microsandbox(8,149) 대비 작다. 다만 2026-04-02 생성 후 최근 급등의 계기는 HN 노출과 v0.6.0 릴리스로 보인다.</li>
</ul>



<h2 class="wp-block-heading">절차 체크리스트: 도입 전 10가지</h2>



<ol class="wp-block-list">
<li>CPU 가상화 지원 확인: 리눅스 <code>ls -l /dev/kvm</code>, 맥은 Apple Silicon인지.</li>

<li>사전 요건 설치: 맥 <code>brew install lima</code>, 리눅스는 <code>curl tar e2fsprogs</code> 등.</li>

<li><code>gh</code> 최신 버전 설치(증명 검증용) — 선택이지만 권장.</li>

<li><code>VERSION=v0.6.0</code> 고정 설치. 무분별한 latest 대신 버전을 명시한다.</li>

<li><code>coop init</code> 후 <code>~/.coop/config.toml</code>에서 <code>github</code> 기본값(off) 확인.</li>

<li>첫 프로젝트는 중요하지 않은 저장소로 <code>coop up</code> 테스트.</li>

<li><code>coop claude --ask</code>로 프롬프트 동작을 먼저 확인한 뒤 자율 모드로 전환.</li>

<li>API 키 노출이 걱정되면 <code>[proxy]</code> 모드 검토(v0.6.0+).</li>

<li>정기적 <code>coop update</code>(체크섬·증명 자동 검증) 또는 <code>updates.mode="off"</code> 명시적 선택.</li>

<li>제거 예행연습: <code>coop destroy --all</code> → <code>coop uninstall --purge -y</code> → <code>coop-proxy</code> 잔존 확인.</li>
</ol>



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



<h3 class="wp-block-heading">Hermes에서도 쓸 수 있나?</h3>



<p>Hermes 에이전트 자체를 격리하는 통합 기능은 없다. Hermes가 Claude Code/Codex CLI를 감싸서 쓰는 구성이라면 그 CLI를 coop VM 안에 두는 우회가 가능하다. 이 글의 검증 범위는 Claude Code/Codex 공식 대상이므로 Hermes 연동은 미확정으로 둔다.</p>



<h3 class="wp-block-heading">Docker 컨테이너로 같은 효과를 낼 수 없나?</h3>



<p>부분적으로는 가능하다. 하지만 컨테이너는 커널을 공유하므로 격리 강도가 VM보다 낮고, Claude Code/Codex CLI 설치·자격 증명 전달·프로젝트 동기화를 직접 스크립팅해야 한다. coop은 그 마찰을 없애는 것이 본체다. 반대로 격리 요구가 낮으면 컨테이너가 더 가볍다.</p>



<h3 class="wp-block-heading">VM 안에서 인터넷 접속은 되나?</h3>



<p>된다. 이것이 현재의 명시적 한계다. egress 화이트리스트는 이슈 #2로 열려 있다. 데이터 유출 우려가 크다면 프록시 모드로 키를 호스트에 두고, 마운트 디렉터리를 최소화한다.</p>



<h3 class="wp-block-heading">윈도우에서 쓸 수 있나?</h3>



<p>지원하지 않는다. WSL2에서 KVM 중첩이 되는 환경이라면 리눅스 백엔드 시도는 가능하지만 공식 지원이 아니며 이 글에서 검증하지 않았다.</p>



<h3 class="wp-block-heading">설치했을 때 호스트에 무엇이 생기나?</h3>



<p><code>~/.local/bin/coop</code>, <code>~/.local/bin/coop-proxy</code>, <code>~/.coop/</code>(설정·이미지·키), 선택적으로 firecracker 바이너리가 <code>~/.coop</code> 안에 생긴다. <code>coop setup</code>을 실행하면 시스템에 firecracker·커널·브리지 설정이 추가된다(제거 시 <code>--purge</code>가 정리). 셸 설정 파일은 건드리지 않는다. PATH에 <code>~/.local/bin</code> 추가는 사용자가 직접 한다.</p>



<h3 class="wp-block-heading">기존에 쓰던 Claude Code 설정(plugins, CLAUDE.md)은?</h3>



<p><code>[claude] config_dir</code>이 가리키는 <code>~/.claude</code>에서 CLAUDE.md·rules·commands를 게스트로 복사하는 기능이 있다. 마켓플레이스·플러그인 자동 재설치도 config의 <code>marketplaces</code>/<code>plugins</code> 항목으로 지정한다.</p>



<h2 class="wp-block-heading">함께 읽으면 좋은 글</h2>



<ul class="wp-block-list">
<li><a href="https://blog.kwt.co.kr/skillspector-agent-skill-security-snyk-agent-scan/">Agent Skill 설치 전 보안 검사: SkillSpector vs Snyk Agent Scan</a> — 설치형 확장을 검사하는 다른 각도</li>

<li><a href="https://blog.kwt.co.kr/graft-claude-code-context-layer-install-security/">Claude Code가 매번 코드를 다시 읽는 문제, Graft로 끊기</a> — 토큰 절감 계열 확장</li>

<li><a href="https://blog.kwt.co.kr/deja-vu-coding-agent-memory-install-security/">Claude Code가 지난달의 나를 기억하게 만들기: deja-vu 설치·보안 검증</a> — 에이전트 확장 설치·보안 검증 시리즈</li>
</ul>



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



<ul class="wp-block-list">
<li>공식 저장소: <a href="https://github.com/trailofbits/coop">github.com/trailofbits/coop</a></li>

<li>시작 안내: <a href="https://github.com/trailofbits/coop/blob/main/docs/getting-started.md">docs/getting-started.md</a></li>

<li>Claude Code 통합: <a href="https://github.com/trailofbits/coop/blob/main/docs/claude-integration.md">docs/claude-integration.md</a></li>

<li>Codex 통합: <a href="https://github.com/trailofbits/coop/blob/main/docs/codex-integration.md">docs/codex-integration.md</a></li>

<li>트러스트 모델: <a href="https://github.com/trailofbits/coop/blob/main/docs/trust-model.md">docs/trust-model.md</a></li>

<li>v0.6.0 릴리스 노트: <a href="https://github.com/trailofbits/coop/releases/tag/v0.6.0">releases/tag/v0.6.0</a></li>

<li>Anthropic 공식 샌드박스 문서: <a href="https://code.claude.com/docs/ko/sandbox-environments">샌드박스 환경 선택</a></li>

<li>HN 토론: <a href="https://news.ycombinator.com/item?id=49593842">Coop – Isolated VM Environments (2026-09-07)</a></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="2876"
					data-ulike-nonce="d90320884f"
					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_2876"></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/coop-claude-code-codex-vm-isolation-install-security/">Claude Code에 맘껏 권한 주고 싶지만 내 노트북은 아깝다면: Trail of Bits coop 설치·보안·제거 직접 검증</a> appeared first on <a href="https://blog.kwt.co.kr"></a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.kwt.co.kr/coop-claude-code-codex-vm-isolation-install-security/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Claude Code가 지난달의 나를 기억하게 만들기: deja-vu 설치·보안 검증</title>
		<link>https://blog.kwt.co.kr/deja-vu-coding-agent-memory-install-security/</link>
					<comments>https://blog.kwt.co.kr/deja-vu-coding-agent-memory-install-security/#respond</comments>
		
		<dc:creator><![CDATA[시간 조절자]]></dc:creator>
		<pubDate>Sat, 05 Sep 2026 21:40:12 +0000</pubDate>
				<category><![CDATA[기술]]></category>
		<category><![CDATA[Claude Code]]></category>
		<category><![CDATA[Codex]]></category>
		<category><![CDATA[MCP]]></category>
		<category><![CDATA[에이전트]]></category>
		<category><![CDATA[오픈소스]]></category>
		<guid isPermaLink="false">https://blog.kwt.co.kr/?p=2848</guid>

					<description><![CDATA[<p>Claude Code·Codex·Cursor 세션 로그를 색인해 설치 이전 기록까지 검색·회수하는 오픈소스 deja-vu를 격리 환경에서 직접 설치·검증했다. mem0·CLAUDE.md와의 차이, 비밀값 가림 동작, 제거 방법까지.</p>
<p>The post <a href="https://blog.kwt.co.kr/deja-vu-coding-agent-memory-install-security/">Claude Code가 지난달의 나를 기억하게 만들기: deja-vu 설치·보안 검증</a> appeared first on <a href="https://blog.kwt.co.kr"></a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Claude Code·Codex·Cursor를 여러 개 쓰는 개발자라면 매일 같은 문제를 겪는다. 3월에 고쳤던 버그를 9월에 또 처음부터 디버깅하고, 다른 에이전트에서 해결했던 일을 지금 쓰는 에이전트는 전혀 모른다. 오픈소스 <strong>deja-vu</strong>는 이 간극을 메운다. 각 에이전트가 이미 디스크에 저장하는 세션 로그를 색인해서, 설치 이전 기록까지 포함해 검색·회수(recall)해 주는 로컬 메모리 레이어다. LLM 호출도 임베딩도 없고 Go 단일 바이너리로 동작하며, 색인 시점에 API 키·JWT 등 비밀값을 자동으로 가린다. 이 글은 공식 저장소와 직접 설치 검증(설치 → 색인 → 검색 → 가림 확인 → 제거)을 기준으로 정리했다. 주의점 하나: 세션 로그 전체를 읽는 도구이므로 신뢰할 수 있는 공식 릴리스(checksums.txt 검증)로만 설치해야 한다.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1400" height="788" src="https://blog.kwt.co.kr/wp-content/uploads/2026/09/dejavu-featured.jpg" alt="Claude Code 세션 로그를 색인해 과거 기록을 회수하는 deja-vu 로컬 메모리 도구" class="wp-image-2847"/><figcaption class="wp-element-caption">deja-vu의 문제 정의와 동작 방식 요약<br />출처: 직접 제작 (2026-09-06 기준 공식 저장소 정보)</figcaption></figure>



<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>: 코딩 에이전트 세션 로그 색인·검색 로컬 메모리 (MCP 서버 + CLI, Go 단일 바이너리, MIT 라이선스)</li>

<li><strong>해결 문제</strong>: &#8220;이 문제 예전에 해결했었는데&#8221; — Claude Code/Codex/Cursor 등 22종 에이전트의 과거 세션을 통합 검색하고 MCP <code>recall</code> 도구로 자동 회수</li>

<li><strong>차별점</strong>: mem0·CLAUDE.md 같은 기존 메모리 도구는 &#8216;앞으로 쌓는&#8217; 방식, deja-vu는 &#8216;이미 디스크에 있는&#8217; 과거 기록부터 색인. 임베딩·LLM 없이 어휘 검색이라 비용 0원</li>

<li><strong>검증</strong>: 2026-09-06 격리 HOME에서 v0.19.3 설치·색인·검색·비밀값 가림·제거 직접 확인 (sha256 체크섬 일치)</li>

<li><strong>주의</strong>: 세션 로그 통독 도구이므로 출처·체크섬 확인 필수. macOS·Linux가 공식 지원, Windows는 Scoop·zip으로 설치</li>
</ul>
</blockquote>



<h2 class="wp-block-heading">deja-vu가 필요한 순간</h2>



<p>에이전트는 세션을 끝내면 대부분 잊는다. Claude Code는 <code>~/.claude/projects</code>에 JSONL로 대화를 쌓고, Codex는 <code>~/.codex</code>에, Cursor는 자체 스토어에 기록을 남긴다. 파일은 있는데 아무도 검색하지 않는다. 결과는 반복 노동이다.</p>



<p>deja-vu README의 표현이 정확하다. &#8220;모든 메모리 도구는 비어 있는 상태로 시작해 앞으로 기록한다. deja는 가득 찬 상태로 시작한다.&#8221; 설치 즉시 이미 디스크에 있는 수개월치 세션을 전부 색인하기 때문에, 별도 학습 없이 첫 순간부터 과거 기록을 검색할 수 있다.</p>



<p>실제로 이런 질문이 가능해진다:</p>



<pre class="wp-block-code"><code>"jwt refresh rotation 이전에 처리한 적 있지? 기억 확인해줘"</code></pre>



<p>에이전트가 MCP <code>recall</code> 도구를 스스로 호출해 8개월 전 세션의 해결 기록을 가져온다. <code>deja install --auto</code>를 켜면 세션 시작·프롬프트마다·파일 편집 전·명령 실패 후 등 훅 시점에 관련 기억을 자동으로 주입하도록 설정할 수도 있다.</p>



<h2 class="wp-block-heading">기본 정보와 검증 시점</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>항목</th><th>내용 (2026-09-06 기준)</th></tr></thead><tbody>
<tr><td>이름·유형</td><td>deja-vu — 코딩 에이전트용 로컬 메모리 (CLI + MCP 서버)</td></tr>
<tr><td>공식 저장소</td><td>github.com/vshulcz/deja-vu</td></tr>
<tr><td>공식 문서</td><td>vshulcz.github.io/deja-vu</td></tr>
<tr><td>최초 생성</td><td>2026-07-14</td></tr>
<tr><td>최근 푸시</td><td>2026-09-05 (매일 커밋·릴리스 활동 지속)</td></tr>
<tr><td>최신 릴리스</td><td>v0.19.3 (2026-09-04)</td></tr>
<tr><td>stars / forks</td><td>779 / 64</td></tr>
<tr><td>라이선스</td><td>MIT</td></tr>
<tr><td>구현 언어</td><td>Go (단일 바이너리, 의존성 없음)</td></tr>
<tr><td>지원 harness</td><td>22종 — Claude Code, Codex, Cursor, Gemini CLI, opencode, aider, Antigravity, Grok Build, Qwen, Kimi, goose, cline, roo, amp, zed, OpenClaw, Copilot, Hermes 등</td></tr>
<tr><td>외부 언급</td><td>Hacker News 2026-07-15 &#8220;Open-source memory for coding agents, synced over SSH&#8221; 131점·댓글 35개</td></tr>
</tbody></table></figure>




<p>stars 증가 속도는 이 스냅숏 체계로 관측 중이다. 이 도구는 2026-09-06 이번 실행에서 처음 관측해 779 stars를 기록했다. 1일·7일 증분은 아직 이력이 없어 <strong>unavailable</strong>로 표기하며, 총 stars에서 역산한 평균 속도(7월 14일 생성 이후 약 54일간 약 14.4 stars/일의 단순 평균, <strong>provisional</strong>)로만 참고한다. 확정 가능한 사실은 7월 중순 HN 131점 논의 이후 약 7주 만에 779 stars에 도달했고, 9월 4~5일에도 매일 기능 커밋·이슈 마감이 이뤄지고 있다는 유지보수 활동이다.</p>



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



<h3 class="wp-block-heading">공통 준비 (macOS · Linux)</h3>



<pre class="wp-block-code"><code>curl -fsSL https://raw.githubusercontent.com/vshulcz/deja-vu/main/install.sh | sh
deja install --auto</code></pre>



<p>설치 스크립트를 직접 열어 확인한 동작은 다음과 같다. (1) GitHub 최신 릴리스 태그 조회 (2) 플랫폼별 tar.gz와 checksums.txt 다운로드 (3) sha256 비교 (4) <code>~/.local/bin/deja</code> 설치 (5) PATH 등록 안내. 셸 프로필 수정은 대화형으로 y/N을 물어보고, 파이프 설치 시에는 안내 문구만 출력한다. <code>--yes</code> 플래그가 없으면 아무것도 강제로 바꾸지 않는다.</p>



<p><code>deja install --auto</code>가 실제 배선 단계다. 발견한 에이전트별 MCP 설정에 <code>recall</code> 도구를 등록하고, 세션 시작 회수가 가능한 에이전트에서는 훅도 켠다. 이 단계가 에이전트 설정 파일을 수정하는 유일한 지점이다.</p>



<h3 class="wp-block-heading">Claude Code (플러그인 마켓플레이스 방식)</h3>



<pre class="wp-block-code"><code>claude plugin marketplace add vshulcz/deja-vu
claude plugin install deja-vu@deja-vu</code></pre>



<h3 class="wp-block-heading">Codex / 기타 MCP 클라이언트</h3>



<p>MCP 서버로 연결한다. <code>deja install</code>이 <code>~/.codex/config.toml</code>에 자동 등록해 주며, 수동으로는 각 클라이언트의 MCP 설정에 <code>deja</code> 바이너리를 stdio 서버로 지정한다. 데스크톱 앱은 릴리스에 포함된 <code>.mcpb</code> 번들을 열면 된다.</p>



<h3 class="wp-block-heading">Hermes</h3>



<p><code>deja install</code>이 Hermes 프로파일(<code>~/.hermes/config.yaml</code>)도 감지해 배선한다. 격리 검증에서 <code>deja sources</code> 출력에 <code>hermes ~/.hermes/profiles</code> 스토어가 확인됐다.</p>



<h3 class="wp-block-heading">Windows</h3>



<p>install.sh는 셸 스크립트라 지원하지 않는다. Scoop 메인 버킷(<code>scoop install deja-vu</code>) 또는 릴리스의 <code>deja-vu_&lt;버전&gt;_windows_amd64.zip</code>을 받아 <code>%USERPROFILE%\.local\bin</code>에 두고 PATH에 추가한다.</p>



<h3 class="wp-block-heading">설치 시 바뀌는 경로·파일</h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>경로</th><th>용도</th></tr></thead><tbody>
<tr><td><code>~/.local/bin/deja</code></td><td>바이너리 (11.9MB)</td></tr>
<tr><td><code>~/.cache/deja/</code></td><td>색인 데이터베이스·캐시</td></tr>
<tr><td><code>~/.config/deja/</code></td><td>설정·제외 패턴(<code>exclude</code>), 신뢰 정책(<code>policy.json</code>)</td></tr>
<tr><td><code>~/.claude.json</code> 등 각 에이전트 MCP 설정</td><td><code>recall</code> 도구 등록 (자동)</td></tr>
<tr><td><code>~/.claude/skills/deja-history/SKILL.md</code> 등</td><td>회수 가이드 스킬 (자동)</td></tr>
</tbody></table></figure>




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



<pre class="wp-block-code"><code>deja uninstall --all     # 각 에이전트에서 MCP 배선 제거 시도
rm -rf ~/.cache/deja     # 색인 데이터 완전 삭제
rm ~/.local/bin/deja     # 바이너리 삭제</code></pre>



<p><code>deja uninstall --all</code>은 자신이 수정한 배선을 되돌리려 시도하고, 색인 캐시는 별도 삭제가 필요하다. 원본 세션 로그(<code>~/.claude/projects</code> 등)는 건드리지 않는다 — 삭제해도 에이전트 기록은 그대로다.</p>



<h2 class="wp-block-heading">무엇을 검증했고 무엇을 못 했나</h2>



<h3 class="wp-block-heading">직접 검증한 것 (2026-09-06, 격리 HOME)</h3>



<ul class="wp-block-list">
<li>v0.19.3 linux_arm64 바이너리 다운로드 후 <strong>sha256 체크섬 일치 확인</strong> (checksums.txt의 <code>855661d4…</code>와 로컬 계산값 동일)</li>

<li>임시 HOME에서 <code>deja --version</code> → <code>deja 0.19.3</code> 출력</li>

<li>가상 Claude Code 세션 JSONL 3메시지 색인 → <code>deja index</code> 성공 (claude: 1 session, 3 messages)</li>

<li><code>deja "jwt refresh"</code> 검색 → 세션 매치·발췌 출력 정상</li>

<li><strong>비밀값 가림(redaction) 확인</strong>: 세션에 포함된 AWS 예제 키(AKIA…7EXAMPLE, AWS 공식 문서 예시용)를 검색했더니 색인에 없음. 색인 시점에 가려진다는 README 설명과 일치</li>

<li><code>deja doctor --offline</code>, <code>deja sources</code>로 지원 harness 목록·MCP 배선 상태 진단 정상 동작</li>

<li><code>deja uninstall --all</code> + 캐시 삭제로 임시 환경 정리. <strong>실제 사용자 HOME은 변경 없음 확인</strong></li>
</ul>



<h3 class="wp-block-heading">검증하지 못한 것</h3>



<ul class="wp-block-list">
<li>실사용 환경에서의 자동 recall 품질 (수개월치 실세션 대상 성능)</li>

<li><code>deja sync ssh</code> 기계 간 동기화, <code>deja handoff</code> 에이전트 전환</li>

<li>LongMemEval-S 85.3%·LoCoMo 69.6% 벤치마크 수치 재현 (README·공식 문서 발췌이며 제3자 검증 아님)</li>

<li>Windows 설치 경로</li>
</ul>



<p>벤치마크 수치는 제작자 자체 측정이고 재현 스크립트가 저장소에 포함되어 있지만 이번 실행에서 돌려보지는 못했다. &#8216;밀리초 조회&#8217; 성능 주장도 공식 문서 기준으로만 인용한다.</p>



<h2 class="wp-block-heading">권한·보안: 숨기지 않고 정리</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>항목</th><th>내용</th></tr></thead><tbody>
<tr><td>데이터 처리</td><td>색인·검색 전부 로컬. 네트워크 사용은 <code>deja update</code>, <code>deja sync ssh</code>, <code>deja doctor</code> 버전 확인뿐 (README 명시)</td></tr>
<tr><td>비밀값 가림</td><td>색인 시점에 AWS 키, <code>api_key=</code>/<code>token=</code> 할당, Bearer·JWT, PEM 블록, <code>scheme://user:pass@host</code>, 고엔트로피 값을 <code>[redacted:&lt;kind&gt;]</code>로 치환. <code>share</code>·<code>sync export</code>에서 재적용</td></tr>
<tr><td>가림의 한계</td><td>패턴 매칭 기반이라 알려지지 않은 형태의 비밀값은 통과할 수 있음 (공식 보안 모델 문서가 스스로 명시)</td></tr>
<tr><td>API 키·비용</td><td>도구 자체는 무료·키 불필요. LLM·임베딩 호출이 없어 추가 비용 0</td></tr>
<tr><td>텔레메트리</td><td>명시된 외부 전송 없음</td></tr>
<tr><td>공급망</td><td>설치 스크립트가 checksums.txt 검사 내장. 릴리스에는 SBOM(spdx.json)·서명 파일(.pem/.sig) 동봉</td></tr>
<tr><td>접근 범위</td><td>세션 로그 전체 통독이 기능의 본질 — 신뢰할 수 없는 환경의 세션까지 색인하면 안 됨. <code>~/.config/deja/exclude</code>로 프로젝트 제외 가능, <code>deja forget</code>으로 세션 단위 삭제(묘비 기록으로 재색인 방지)</td></tr>
</tbody></table></figure>




<p>세션 로그에는 평소 에이전트에게 보낸 코드·설명이 통째로 담긴다. &#8220;읽는 도구&#8221;가 생긴다는 점 자체가 보안 의사결정이다. 회사 정책상 민감한 프로젝트는 exclude 패턴으로 처음부터 배제하는 것이 안전하다.</p>



<h2 class="wp-block-heading">기존 도구와 비교: mem0·CLAUDE.md 대신 쓸 것인가</h2>



<p>비슷한 문제(에이전트 기억)를 푸는 대표 도구와의 관계를 정리한다.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>구분</th><th>deja-vu</th><th>mem0</th><th>CLAUDE.md / 메모리 파일</th></tr></thead><tbody>
<tr><td>분류</td><td>세션 로그 색인·검색</td><td>벡터 메모리 레이어</td><td>수동 메모 노트</td></tr>
<tr><td>입력</td><td>이미 디스크에 있는 세션 로그</td><td>사용 중 발생하는 대화·메모</td><td>사람이 직접 작성</td></tr>
<tr><td>출력</td><td>어휘 검색 매치·세션 발췌, MCP <code>recall</code></td><td>임베딩 기반 회수</td><td>프롬프트에 주입되는 정적 텍스트</td></tr>
<tr><td>과거 기록</td><td>설치 이전 전부 색인</td><td>설치 이후부터</td><td>작성한 내용만</td></tr>
<tr><td>추가 비용·LLM</td><td>없음 (임베딩 없음)</td><td>임베딩·저장소 비용 발생 가능</td><td>없음</td></tr>
<tr><td>데이터 처리</td><td>전부 로컬</td><td>구성에 따라 외부 저장소·API</td><td>전부 로컬</td></tr>
<tr><td>정확도 성격</td><td>원문 그대로 인용 (수정 없음)</td><td>유사도 기반 (재구성 가능)</td><td>사람이 검증한 내용</td></tr>
<tr><td>에이전트 연결</td><td>MCP 표준 + 22종 자동 배선</td><td>SDK·API 중심</td><td>Claude Code 전용 관례</td></tr>
</tbody></table></figure>




<p><strong>분류: 보완재에 가깝다.</strong> mem0처럼 &#8216;앞으로 쌓는&#8217; 시맨틱 메모리와 deja-vu의 &#8216;이미 있는 것을 뒤지는&#8217; 어휘 검색은 해결 계층이 다르다. CLAUDE.md는 프로젝트 관례를 적는 자리지 과거 세션 검색 도구가 아니다. Claude Code를 쓰면서 &#8220;예전에 이거 고친 기록 어디 있지?&#8221;를 자주 겪는다면 deja-vu를 먼저 붙이고, 필요하면 시맨틱 메모리를 함께 쓰는 구성이 합리적이다.</p>



<h3 class="wp-block-heading">추천하는 경우</h3>



<ul class="wp-block-list">
<li>Claude Code·Codex·Cursor 등 둘 이상의 에이전트를 같이 쓰며 기록이 쌓여 있는 개발자</li>

<li>반복해서 비슷한 버그·설정 문제를 풀고, 과거 해결 이력을 못 찾아 답답한 팀·개인</li>

<li>클라우드·임베딩 비용 없이 로컬에서만 해결하려는 경우</li>

<li>세션 로그가 민감하지 않거나 exclude로 통제 가능한 환경</li>
</ul>



<h3 class="wp-block-heading">추천하지 않는 경우</h3>



<ul class="wp-block-list">
<li>세션 로그에 규정상 외부 도구가 색인하면 안 되는 코드·데이터가 섞여 있고 제외 통제가 어려운 환경</li>

<li>Windows 전용 개발 환경에서 공식 install.sh 경로를 원하는 경우 (Scoop·zip 우회 필요)</li>

<li>&#8216;요약된 지식&#8217;을 원하는 경우 — deja-vu는 원문 회수 도구지 요약 엔진이 아니다</li>

<li>벤치마크 수치를 근거로 도입을 결정해야 하는 조직 (제3자 검증 아직 부족)</li>
</ul>



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



<ol class="wp-block-list">
<li>기존 세션 로그 백업: <code>cp -r ~/.claude ~/claude-backup</code> (필요 시)</li>

<li>공식 저장소·릴리스 확인: GitHub <code>vshulcz/deja-vu</code> Releases에서 최신 태그와 checksums.txt 확인</li>

<li>격리 검증 먼저: 임시 HOME에서 색인·검색 동작 확인 후 실제 환경 적용</li>

<li>민감 프로젝트 제외: <code>~/.config/deja/exclude</code>에 경로 패턴 사전 등록</li>

<li>배선 범위 확인: <code>deja doctor</code>로 어떤 에이전트 설정이 바뀌는지 먼저 조회</li>

<li>제거 절차 숙지: <code>deja uninstall --all</code> + <code>rm -rf ~/.cache/deja</code></li>

<li>운영 환경(실제 프로젝트 설정)에는 바로 적용하지 않고 개인 환경에서 먼저 운영</li>
</ol>



<h2 class="wp-block-heading">안전한 복사·붙여넣기 프롬프트</h2>



<p>이 글을 읽은 뒤 Claude Code나 Codex에 그대로 붙여넣어 설치를 요청할 수 있다. 아래 프롬프트는 버전 고정·체크섬 확인·백업·격리 검증·제거 절차를 포함한다.</p>



<pre class="wp-block-code"><code>deja-vu(v0.19.3, github.com/vshulcz/deja-vu, MIT) 설치를 도와줘.
다음 절차를 정확히 지켜줘:

1. 먼저 백업: ~/.claude 디렉터리와 각 에이전트 MCP 설정 파일을
   ~/deja-install-backup-$(date +%Y%m%d)/ 로 복사해 줘.
2. 버전 고정: v0.19.3 릴리스의 linux 바이너리와 checksums.txt를 내려받고
   sha256sum으로 체크섬이 일치하는지 확인한 뒤 진행해 줘.
   최신 버전이 v0.19.3보다 높으면 먼저 알려주고 기다려 줘.
3. 격리 검증 먼저: 임시 홈(예: /tmp/deja-test)에서 deja --version,
   deja sources, 가상 세션 1건 색인·검색이 동작하는지 확인해 줘.
   실제 홈의 에이전트 설정은 아직 건드리지 마.
4. 격리 검증 결과를 보여준 뒤, 내가 승인하면 실제 환경에
   ~/.local/bin에 설치하고 deja install --auto로 배선해 줘.
   어떤 설정 파일이 바뀌었는지 하나씩 나열해 줘.
5. 보안 확인: 색인 대상에서 제외할 민감 프로젝트가 있으면
   ~/.config/deja/exclude에 추가하고, redaction 동작을
   테스트 문장으로 확인해 줘.
6. 마지막에 제거 방법을 안내해 줘:
   deja uninstall --all &amp;&amp; rm -rf ~/.cache/deja

절대 하지 말 것: API 키·비밀 입력 요청, 운영 프로젝트 설정 변경,
체크섬 불일치 파일 실행, 백업 없이 에이전트 설정 수정.</code></pre>



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



<h3 class="wp-block-heading">deja-vu는 에이전트 성능 벤치마크를 올려주는 도구인가?</h3>



<p>아니다. 모델 성능을 바꾸는 도구가 아니라, 과거 세션에서 관련 기록을 찾아 현재 세션에 주입하는 회수 계층이다. &#8220;같은 실수를 반복하지 않게&#8221; 돕는 도구로 이해해야 한다.</p>



<h3 class="wp-block-heading">임베딩 없이 어떻게 검색이 되나?</h3>



<p>어휘(lexical) 검색과 시간 가중을 조합한 로컬 색인을 쓴다. 다중 단어는 AND, 정확 매치가 없으면 어형 변형·유사 철자로 확장한다. README 기준 조회 중앙값 약 0.4ms이며 이는 공식 문서 발췌다.</p>



<h3 class="wp-block-heading">세션 로그가 크면 느려지지 않나?</h3>



<p>수 GB 히스토리에서 밀리초 단위 조회를 목표로 설계됐다고 공식 문서에 명시돼 있다. 다만 이 수치는 제작자 측정이므로 자기 환경 규모로 검증 후 도입을 권한다.</p>



<h3 class="wp-block-heading">mem0를 이미 쓰고 있는데 갈아탈 필요가 있나?</h3>



<p>갈아탈 이유가 아니다. 둘은 보완 관계다. 이미 쌓인 과거 세션을 활용하는 건 deja-vu, 앞으로의 대화에서 시맨틱하게 기억하는 건 mem0의 영역이다.</p>



<h3 class="wp-block-heading">회사 노트북에 설치해도 되나?</h3>



<p>세션 로그 통독이 본질인 도구이므로 보안 정책부터 확인한다. 민감 프로젝트는 <code>~/.config/deja/exclude</code>로 제외하고, 확실하지 않으면 보안 담당자에게 먼저 확인한다.</p>



<h3 class="wp-block-heading">설치했더니 에이전트가 느려진 것 같다</h3>



<p><code>deja install --auto</code>가 켠 세션 시작 훅은 수십 밀리초 수준이라고 문서에 명시돼 있다. 그래도 부담되면 자동 배선 없이 바이너리만 두고 필요할 때 <code>deja "&lt;query&gt;"</code>로 수동 검색하는 구성도 가능하다.</p>



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



<ul class="wp-block-list">
<li>공식 저장소: https://github.com/vshulcz/deja-vu</li>

<li>공식 문서: https://vshulcz.github.io/deja-vu/</li>

<li>보안 모델 문서: https://github.com/vshulcz/deja-vu/blob/main/docs/SECURITY-MODEL.md</li>

<li>벤치마크 페이지: https://vshulcz.github.io/deja-vu/guide/benchmarks.html</li>

<li>릴리스 (checksums·SBOM 포함): https://github.com/vshulcz/deja-vu/releases</li>

<li>Hacker News 논의 (2026-07-15): https://news.ycombinator.com/item?id=48923111</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="2848"
					data-ulike-nonce="141ab1d97a"
					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_2848"></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/deja-vu-coding-agent-memory-install-security/">Claude Code가 지난달의 나를 기억하게 만들기: deja-vu 설치·보안 검증</a> appeared first on <a href="https://blog.kwt.co.kr"></a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.kwt.co.kr/deja-vu-coding-agent-memory-install-security/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
