# 민감한 메모리

자격 증명, 개인 정보, 높은 민감도의 메모리에 적용되는 실제 sanitization 및 retrieval visibility 제어를 이해합니다.

- Canonical: https://docs.xmemo.dev/ko/docs/concepts/sensitive-memory
- Locale: ko-KR
- Content-Locale: ko-KR
- Canonical-Content-Digest: f4135c91811fc6ab82f0fcbe64bdbe557f8f57024585230ef640f73d09da08fa
- Edition-Digest: 44a8c7e62670fbd31e4690b40a4d7fd48036fde65b1def91aa0f30ea96ca7a97
- Source-Revision: sha256:2d80a1534f639a21ed4385df129fd914a3ed4da7b24c261eee0ad18032a0f691

## 민감도는 memory type이 아니라 처리 정책입니다

memory contract의 memory_type enum은 episodic, semantic, procedural, working 또는 identity이며 sensitive 값은 없습니다. 민감도는 여섯 번째 memory type을 만들어내는 대신 공용 redaction 및 security-envelope 제어로 처리합니다.

- 자격 증명 형태의 값은 canonical server sanitizer가 항상 redaction합니다.
- 소유자의 개인 PII는 기본적으로 유지되며 owner가 auto_redact_pii를 활성화하면 redaction됩니다.
- 고위험 private-key 또는 AWS-secret content가 있으면 agent capture가 event를 건너뜁니다.

## content, metadata, provenance를 함께 sanitize하기

sanitize_server_write는 memory row에서 도달 가능한 모든 문자열에 shared rule registry를 적용하며 content, metadata, provenance도 포함합니다. Credential label, API key, JWT, URL secret 및 등록된 기타 credential 형태 값은 persistence 전에 제거됩니다. redaction은 result metadata에 raw value를 절대 반환하지 않습니다.

```python
from memory_manager.security.redact import sanitize_server_write

result = sanitize_server_write(
    "Deploy with token=not-a-real-secret",
    redact_contact_pii=False,
)
print(result.text)
print(result.applied, result.redactions)
```

## Vault mode는 메모리를 로컬에 유지할 수 있습니다

security envelope는 security_mode, encryption_state, retrieval_visibility, server_embeddings_enabled 및 server_content_search_enabled를 기록합니다. Vault mode는 ciphertext를 저장하고 기본 retrieval_visibility=client_local_only이며 server embeddings가 비활성화됩니다. tenant가 semantic indexing을 명시적으로 선택하지 않는 한 server recall에서 제외됩니다.

```json
{
  "security_mode": "vault",
  "encryption_state": "ciphertext",
  "retrieval_visibility": "client_local_only",
  "server_embeddings_enabled": false,
  "server_content_search_enabled": false
}
```

## Recall은 envelope를 따릅니다

server recall gate는 client_local_only 또는 not_retrievable로 표시된 row를 제외합니다. 또한 metadata가 vault_semantic_index_opt_in을 명시적으로 선택하지 않으면 Vault row도 제외됩니다. security envelope는 server-side semantic index를 허용하므로 이 opt-in을 tradeoff로 설명합니다. server recall에 들어가면 안 되는 content에는 local recall을 사용하세요.

```text
client_local_only  -> excluded from server recall
not_retrievable    -> excluded from server recall
vault + opt-in     -> server vector recall allowed
vault without opt-in -> local recall required
```

## ChatGPT 사용자

채팅에 전달자 토큰을 붙여넣지 않고도 XMemo 기본 설정, 프로젝트 사실, 결정 및 TODO에 대한 지속 가능한 액세스를 ChatGPT에 부여하세요.

ChatGPT/OpenAI 앱 OAuth 흐름을 통해 호스팅된 XMemo MCP 서버를 연결한 다음 XMemo 계정에 대한 메모리:읽기 및 메모리:쓰기 권한을 승인합니다.

종합 기본 설정이나 프로젝트 노트를 저장하고 새 채팅을 시작한 다음 작업을 계속하기 전에 XMemo를 통해 ChatGPT에 이를 불러오도록 요청하세요.

OAuth가 실패하거나 도구가 표시되지 않으면 호스트 앱의 MCP 서버에서 로그아웃하고 XMemo 서버 URL을 다시 연결한 후 직접 토큰을 생성하기 전에 다시 시도하세요.

## 부조종사/Codex 개발자

IDE와 CLI 에이전트 간에 리포지토리 결정, 코딩 규칙, 버그 수정 메모, 작업 기록을 전달합니다.

가능한 경우 VS Code / GitHub Copilot 및 Gemini CLI에 OAuth를 사용하세요. Copilot CLI, Codex, Cursor 또는 기타 직접 MCP 클라이언트의 경우 로컬 환경 또는 보안 저장소에 XMEMO_KEY를 유지하고 안정적인 XMEMO_AGENT_INSTANCE_ID를 설정하세요.

코드베이스 결정이나 버그 수정을 기록한 후 편집하기 전에 다음 IDE 또는 CLI 에이전트에게 관련 XMemo 컨텍스트를 기억하도록 요청하세요.

회수가 비어 있는 경우 선택한 MCP 구성 경로, 직접 클라이언트용 XMEMO_KEY 환경 변수 및 호스트 앱의 오래된 OAuth 자격 증명을 확인하세요.

## 팀/엔터프라이즈 파일럿 소유자

계정 제어, 소스 속성, 내보내기/삭제 워크플로, 검토자에게 안전한 설정 증거를 통해 공유 메모리를 평가합니다.

보호된 XMemo 작업 공간을 생성하거나 입력하고 승인된 사용자를 초대한 다음 준비 배지에 따라 OAuth 또는 범위가 지정된 직접 자격 증명을 통해 각 클라이언트를 연결합니다.

파일럿 멤버에게 가상 팀 메모리를 저장하고 XMemo에서 소스 속성을 확인한 다음 삭제/내보내기 및 지원 경로를 검토하도록 합니다.

구성원이 연결할 수 없는 경우 새 토큰을 발급하기 전에 역할 권한, OAuth 승인, 클라이언트 준비 상태 및 지원 지침을 확인하세요.

## 자율 에이전트 운영자

헤드리스 또는 예약 에이전트가 진행 상황을 기록하고, 이전 결정을 검색하고, 안정적이고 비밀이 아닌 인스턴스 ID를 유지하도록 합니다.

/api/v1/mcp/config/autonomous-agent를 가져옵니다. 실행기가 OAuth + 사용자 정의 헤더를 지원하는 경우 auth_modes.oauth를 선호합니다. 완전 헤드리스 러너에 대해서만 비밀 저장소의 XMEMO_KEY와 함께 auth_modes.xmemo_key를 사용하십시오.

XMemo에 진행 상황을 기록하는 하나의 합성 작업을 실행하고 실행기를 다시 시작한 다음 동일한 XMEMO_AGENT_INSTANCE_ID를 사용하여 해당 진행 상황을 호출하는지 확인합니다.

속성이 변경되거나 인스턴스 간에 분할된 경우 git 외부에서 XMEMO_AGENT_INSTANCE_ID를 유지하고 실행기가 시작할 때마다 이를 다시 생성하지 않는지 확인하세요.
