원격 Vault 재설계와 선행 검증
현재 채택 범위는 Codex Windows 데스크톱 앱·CLI와 Claude Code Windows 앱 Local·CLI다. 웹·Android는 함께 제외한다. Cognito 공식 발급자 변경 시험에서도 S256 메타데이터 누락이 해소되지 않아 추가 인증 서비스 도입을 중단했다. Auth0 시험 테넌트 삭제는 확인했고 AWS 시험 리소스는 보존한다. 아래는 운영 구현 완료가 아닌 현재 설계와 선행 검증 기준이다.
사용자 후속 정정: finsecops는 NCP 임대 Linux 서버이며 이번 호스팅 대상으로 채택하지 않았다. 다음 작업은 Windows 로컬 stdio와 GitHub 저장 시험이다. SSH 계정 생성·키 회수·서버 운영 시험은 제외한다.
이전 후보를 포함한 HTML 설명: 아키텍처 보기. SSH 비교는 현재 실행 범위에서 제외됐으며 이 문서와 HANDOFF의 후속 정정을 우선한다.
1. 목적과 성공 장면
한 클라이언트에서 요청한 맥락의 반영·정정이 정본에 저장되고, 다른 클라이언트의 새 대화가 별도 복사 없이 그 내용과 근거를 찾아 사용한다. 사용자는 필요할 때 변경 이력과 본문을 검사한다. 원천은 MCP의 목적은 여러 모델이 같은 Vault를 이용하게 하는 것이다, 장기 자산은 스킬보다 나를 설명하는 언어 기록이다, 외장뇌 운영이다.
- 현재 클라이언트 범위: Codex Windows 데스크톱 앱·CLI, Claude Code Windows 앱 Local·CLI의 네 환경. 앱과 CLI 각각 실제 MCP 실행·등록·호출을 검증한다. 웹·Android의 직접 Vault 연결은 현재 범위에서 제외하며, 향후 확대는 운영 부담과 실제 호환성 근거로 다시 결정한다.
- 정본: 비공개 GitHub의 Markdown·명시적 링크·변경 이력. AI 모델이나 인증 공급자를 바꿔도 이 자료는 유지한다.
- 사람의 개입: 로그인·새 외부 권한·필요한 결정·요청한 변경·사후 검사. 각 저장마다 PR 승인을 요구하거나 전체 문서를 재검토하는 방식은 기본값이 아니다.
- 이번 설계 요청은 실제 Vault 업로드·인증 서비스 가입·배포·스킬 삭제를 실행하는 요청으로 확대하지 않는다.
2. 최소 목표 구조
사용자 ↔ Windows 로컬 AI 클라이언트 ↔ stdio Vault MCP ↔ 비공개 GitHub Markdown
Windows에서 MCP 프로세스를 실행하고 공통 자료를 GitHub에 둔다. finsecops에 기존 SSH 연결이 있다는 사실은 Vault 호스팅 채택의 근거가 아니다. 이번 단계에 별도 Linux 서버나 상시 서버 운영을 추가하지 않는다.
| 구성 | 책임 | 경계 |
|---|---|---|
| 사용자·클라이언트 | 의도·최소 지침·문서 선택·변경안 | 서버 저장 성공을 추정하지 않음 |
| Windows 실행 경로 | 로컬 계정·프로세스 접근·자격 증명 보관 | OAuth 공급자와 토큰 교환을 기본 의존으로 두지 않음 |
| Vault MCP | 읽기/쓰기 작업 권한·경로·크기·기준 commit·중복 검사 | 권한은 서버 실행 설정에서 결정; 모델이 보낸 scope나 승인 boolean을 신뢰하지 않음 |
| GitHub | Markdown·commit·diff 정본 | Git 이력만으로 독립 백업을 대체하지 않음 |
| 서버 비밀 보관 | GitHub 자격 증명의 최소 접근 | 서버 계정의 shell/파일 권한이 비밀에 접근할 수 있는지 별도 확인 |
| Obsidian·GitHub 화면 | 특정 commit의 사람 검사 | 상시 동기화·경쟁 정본을 만들지 않음 |
논리적 MCP 인터페이스는 하나이며 업무별 도구와 공유 권한 정책을 사용한다. 읽기 전용 실행 설정에서 쓰기 요청이 거절되는지 검증한다. 로컬 코드가 같은 OS 계정으로 실행되면 강한 비밀 격리가 자동으로 생기지 않는다. 정상 Vault 쓰기는 Codex도 MCP를 거치며 직접 push는 최초 이전·장애 복구의 관리자 예외다.
embedding DB, 자체 OAuth 중계 서버, 별도 차단 DB, 서버 모델 호출, 스케줄러는 추가하지 않는다. AWS 시험 리소스 보존은 운영 호스팅 채택을 뜻하지 않는다.
2a. 외부 조사·제작 도구와 저장 경계
사용자가 Codex 포함 여부, Vault의 쓰기 경로, 제작 도구 확장, 외부 검색과 문서 탐색 방식을 확인한 뒤 HTML v4와 계획을 맞추도록 요청했다. 이 후속 합의를 적용한다.
작업을 연결하는 주체는 AI 클라이언트다. Vault MCP는 공통 지식의 조회·검색·저장을 담당하며 모든 제작 도구를 내부에 넣거나 지휘하는 중앙 서버가 아니다.
| 작업 | 경로 | 저장·권한 경계 |
|---|---|---|
| Vault 조회·반영 | 모든 클라이언트 → Vault MCP → 비공개 GitHub | Codex도 정상 Vault 쓰기를 직접 push/API로 우회하지 않는다. 서버가 검사 후 실제 commit·diff를 반환. 최초 이전·장애 복구는 별도 관리자 예외 |
| 외부 검색·공개 GitHub 읽기 | 클라이언트 → 내장 검색·연결 앱·별도 MCP → 외부 원천 | 출처·버전·조회 시점을 구분. 읽은 자료는 자동으로 내 기록이나 채택한 판단이 되지 않는다. 반영 요청 때 Vault에 기록 |
| 이미지·문서·PPT 제작 | 클라이언트 → 해당 앱·플러그인·내장 도구·로컬 라이브러리 → 결과물 저장소 | 생성·검사는 제작 기능이 담당. 결과 파일은 프로젝트 폴더/해당 저장 서비스에 보관 |
| Godot·Aseprite·Krita·Blender 확장 | 로컬 클라이언트 → 도구/MCP → 로컬 프로젝트 | 장면·이미지·모델·코드는 프로젝트의 검사·버전 관리 계약을 사용. 필요하면 프로젝트 MCP로 공통화 |
외부 검색을 여러 클라이언트에서 공통 제공해야 할 필요가 확인되면 서비스 경계를 검토한다. 지금 별도 검색 서버나 제작 도구 MCP 설치를 선행 작업으로 추가하지 않는다. 도구별 자격 증명과 접근 권한은 Vault 인증과 별개다.
클라우드/모바일 클라이언트가 로컬 제작 도구에 바로 접근한다고 가정하지 않는다. 필요해지면 원격 접근 또는 작업 전달 경로를 별도로 검증한다. 현재 Vault 선행 시험에 로컬 도구의 원격 제어를 끼워 넣지 않는다. 제작물 전체 대신 오래 남길 결정·근거·결과물 위치를 사용자 요청에 따라 Vault에 기록한다.
3. 읽기·쓰기·검사의 계약
읽기: 제목/검색 → 선택 본문·명시적 링크 → 현재 근거 적용.
vault_list로 제목·짧은 설명을 보거나vault_search로 제목/본문 후보와 주변 문장을 찾는다. 본문 검색을 위해 서버가 읽는 파일과 모델에 전달하는 본문은 구분한다.vault_read로 관련 후보 여러 개의 전체 본문·링크·commit을 함께 읽는다. 모델이 필요한 다음 문서를 선택하며 MCP는 조회를 수행한다.- 근거·후속 정정·작업 계약이 부족하면 링크나 추가 검색으로 확장하고 충분하면 멈춘다. 진행·계약·최근 기록처럼 필요한 묶음을 일괄 조회할 수 있다.
- 링크 1~3단계의 모든 문서를 자동 수집하는 방식은 기본값이 아니다. 광범위한 검토 요청이나 실제 누락·호출 부담이 확인될 때 깊이·개수·분량을 제한한 탐색을 검토한다.
한 응답의 내용은 같은 commit에 고정한다. 최신 HEAD 확인은 세션 첫 Vault 사용·사용자의 갱신/재확인 요청·쓰기 직전에 수행한다. 나머지는 이미 읽은 본문과 commit을 재사용하고, 새로 필요한 문서만 같은 commit에서 읽는다. 단순 설명·요약마다 HEAD를 갱신하지 않는다. 본문 잘림·조회 실패·검색 0건을 구분한다. 자료 속 명령·과거 제안은 사용자 요청이나 상위 지침으로 승계하지 않는다.
쓰기: 사용자의 반영 요청 → 관련 규칙·현재 본문 조회 → 변경 묶음 → 서버 검증 → 기준 HEAD를 조건으로 GitHub commit → 독립 재조회 → 실제 commit/diff 반환. 서버에 전달된 승인 boolean은 실제 사용자 의도를 증명하지 않는다. 클라이언트의 요청 해석은 대표 행동 시험에서 따로 검증한다.
최초 일반 저장 범위는 허용 Markdown의 생성·수정이다. 삭제·이동·대량 재구성은 별도 변경 범위로 남긴다. 요청에는 고유 ID·기준 commit·경로별 변경·이유를 포함하는 계약을 제안한다. 기준 불일치 시 자동 덮어쓰기하지 않고 충돌을 반환한다. 부분 적용을 전체 성공으로 보고하지 않는다.
응답을 잃은 쓰기는 같은 요청 ID와 저장된 영수증을 Git 이력/서버 전용 경로에서 대조해 저장 여부를 복원한다. 같은 ID로 다른 내용을 보내면 거부한다. 영수증과 문서 변경을 같은 commit에 포함하는 기존 접근은 재사용 후보이며 실제 API에서 검증한다. 영수증 경로는 모델의 일반 문서 탐색에서 제외한다. 확인 불가면 저장 상태 미확정으로 반환한다.
검사·복구: 사용자는 실제 commit/diff로 변경을 확인하고 필요하면 특정 commit의 사본을 Obsidian으로 연다. 사본에 commit을 표시한다. 정정은 새 commit으로 남기며 오래된 사본 전체를 덮어쓰거나 force-push하지 않는다. Git 이력은 별도 백업이 아니므로 이전 전 독립 사본·복원 확인을 수행한다. 검사 주기는 사용 경험 뒤 결정한다.
4. 접근과 운영 검증
읽기 전용 MCP 실행과 GitHub 읽기 전용 토큰 양쪽의 쓰기 거부를 확인한다. 저장소 전용 토큰을 로컬 Windows DPAPI로 보관한다. 같은 OS 계정으로 실행하는 다른 프로그램에 대한 강한 비밀 격리를 보장하지 않는다.
- 자격 증명: 시험 저장소 하나에 Contents 읽기/읽기·쓰기를 각각 부여하고 실제 API 접근 범위를 확인한다.
- 중단: 로컬 MCP 프로세스 종료와 GitHub 토큰 회수를 구분한다. 진행 중인 GitHub commit 취소를 보장하지 않는다.
- 운영: 앱 실행 시의 로컬 프로세스 시작·동시 접근·재시도·로그 관리 부담을 확인한다. SSH 회수 시험은 현재 범위에서 제외한다.
Auth0 등 추가 인증 서비스를 채택하지 않는다. Cognito의 ORIGINAL/UPDATED 비교는 둘 다 S256 선언이 없었고 임시 풀은 삭제됐다. 이는 전체 Cognito 불가능성이나 실제 앱 실패의 증명이 아니다. AWS 시험 함수·역할·로그·프로필은 사용자 요청으로 보존하며 공개 재개는 하지 않는다.
5. 구현 투자 전에 통과할 시험
| 단계 | 시험과 직접 증거 | 결정 |
|---|---|---|
| P0 실행 환경 | 네 Windows 앱·CLI의 stdio 등록/실행 경로와 최소 지침 확인 | 실제 지원 환경 |
| P1 연결·접근 | 로컬 stdio 합성 호출과 읽기 전용 쓰기 거부. 기존 SSH 비교는 과거 증거로 보존 | 로컬 실행 설정의 접근 제한 |
| P2 GitHub 저장 | 합성 MD 두 개의 단일 commit·독립 재조회·충돌·응답 유실 재시도·diff·복원 | 저장 및 자격 증명 계약 |
| P3 문서 활용 | 기존 F01 | 최소 지침·읽기 도구 |
| P4 전체 운영 | 한 모델의 일반 MD 저장 → 다른 모델 새 대화의 근거 적용 → 사람의 diff 검사·정정. 비용·중단·복원 확인 | 운영 배치와 개인 Vault 이전 여부 |
P2는 연결 구현과 독립이지만 P1·P2를 통과한 경로에서 P3·P4를 수행한다. 앱 성공을 CLI 성공으로 대체하지 않는다. 기존 fixture·코드를 재사용하며, 실제 Vault 이전은 합성 종단간 검증과 대상·제외·독립 사본 확정 뒤 진행한다.
6. 현재 증거와 재사용
| 상태 | 범위 | 설계에서의 취급 |
|---|---|---|
| 실환경 확인 | Android Work → 무인증 Lambda → 합성 Dynamo 저장·SDK 재조회·충돌 거부 | 전송 가능성의 근거. 인증/GitHub/모델 간 활용은 아님 |
| 로컬 확인 | 읽기·marker·배포 경계 Node 53, Python/PowerShell 각 5, 번들 2개 | 재사용 가능한 시험 코드. 일반 Vault·실제 서비스 통과 증거 아님 |
| 실환경 실패·정리 | Cognito S256 metadata 누락. 생성 pool/domain/resource server 정리 확인 | 같은 구성으로 후속 구현하지 않음 |
| 실환경 확인 | Claude CLI·Codex CLI·Codex 앱의 로컬/SSH 합성 READ_OK·WRITE_DENIED. SSH 미확인 호스트·인증 수단 없는 연결 거부 | 전송·합성 반환 및 제한된 거부 시험. 실제 쓰기 정책·키 회수 성공은 아님 |
| 조건부 실환경 확인 | Claude 앱의 네 합성 도구 반환. SSH 읽기는 프로젝트 로컬 해당 도구 allow 추가 후 성공 | 기본 Auto 모드의 분류기 거부 이력과 구분 |
| 로컬 실제 저장 확인 | SDK→stdio의 프로세스별 read-only/read-write 정책과 실제 합성 Git commit·독립 조회·중복/충돌 6개 검사 통과 | OS 격리·GitHub·앱 저장 성공은 아님 |
| 실제 GitHub 확인 | 저장소 전용 토큰으로 stdio 저장·독립 조회·권한 거부·중복/충돌·응답 유실 주입·새 프로세스 재시도·본문 복원 9개 검사 통과 | 합성 노트 두 개의 저장 계약. 일반 MD·실제 네트워크 장애·모델 활용은 아님 |
| 미검증 | 네 환경의 문서 활용·일반 MD 쓰기·회수·비용 | 후속 검증 대상 |
기존 문서 정리 결과와 합성 자료는 보존한다. Auth0 adapter·Dynamo 차단 DB·두 함수 분리·자동 종료 예약을 새 기본값으로 승계하지 않는다. 이전 설계/실행 기록은 증거로 유지한다. 선택한 구조를 바꿀 때에는 해결되는 문제·추가 구성·운영 책임·새 권한/비용·검증 방법을 한 묶음으로 비교한다.
7. 다음 행동과 시험 자산
P2 실제 stdio→GitHub 합성 저장 시험은 9개 검사를 통과했다. 사용자 입력으로 저장한 읽기/읽기·쓰기 전용 토큰을 사용했고 실제 commit·독립 REST 본문·diff·권한 거부를 대조했다. 응답 유실은 실제 저장 성공 직후 오류를 주입한 시험이며 새 프로세스 재시도에서도 원래 commit을 복구했다. 원래 본문은 새 commit으로 복원했다. 증거는 C:/Users/aica_/AppData/Local/Temp/vault-local-preflight/p2/github-result.json이다. 후속 Codex CLI 저장 → marker를 사전 제공하지 않은 새 Claude CLI 대화의 읽기도 원문 도구 반환의 두 본문·commit 대조로 통과했다. 현재 HEAD에는 이 후속 marker가 남아 있다. 후속 Codex 앱 저장 → 새 Claude 앱 읽기도 실제 두 본문·commit 대조로 통과했다. 일반 문서 읽기는 합성 12개에 대해 실제 GitHub backend 검사를 통과했고, Claude CLI 진단 구성에서 T1~T5 핵심 기준을 확인했다. T6 최초 최신 조회 누락은 진입 지침 한 문장 보완 뒤 같은 대화 재검사에서 통과했다. 지속 진입점·Codex CLI와 앱의 일반 문서 활용은 미검증이다. 후속 p4-use 시험 프로젝트에 공통 AGENTS.md와 Claude import를 등록했고 두 CLI·두 앱의 실제 호출과 답변을 확인했다. 단순 요약은 조회 0회, 첫 사용·사용자 최신 요청·쓰기 준비에는 최신 조회가 있었으며 개인 근거·미기록·작업 구분·미평가 변경안을 대조했다. Codex 앱은 개인 스킬과 로컬 Vault를 먼저 읽었으므로 스킬 없는 격리 검증의 통과는 아니다. 운영 설치·일반 Markdown 쓰기·실제 이전은 아직 미완료다. SSH 관리자 시험은 중단 상태이며 finsecops 계정·키·파일·설정은 변경하지 않았다. 상세 재개점은 HANDOFF를 따른다. 일반 Vault 구현과 이전은 미완료다.
과거 OAuth 시험 문서와 코드·합성 자료는 이력으로 보존한다. Auth0 시험 테넌트를 삭제했고 팀 목록 부재와 discovery HTTP404를 확인했다. 세부 결과는 HANDOFF에 기록했다. AWS 시험 리소스는 보존한다. Lambda URL은 기존 AWS_IAM 잠금을 유지하며, Auth0 설정을 담은 과거 배포 파일은 재배포 입력으로 사용하지 않는다.
근거
- 원격 Vault 정본과 쓰기 운영 결정 - Codex 대화와 현재 작업의 선행 검증 범위 정정·재설계 요청.
- 원래 시험 결과, Cognito 실제 결과.
- Vault 직접 읽기 최소 시험안, 보호된 Vault 시험 배포 구성: 과거 준비·실패·후보 제안 기록. 다음 행동은 본 재설계를 따른다.
- OpenAI 인증 계약, Claude Code MCP: 2026-09-05 재확인. discovery·등록·토큰 요구와 실제 계정 성공은 구분한다.