비공개 베타: 소스와 설치 파일은 공개 준비 중이라 설치 명령은 아직 동작하지 않습니다.
aisync

시크릿

토큰이 리포에도, 설정 파일에도 평문으로 남지 않는 방법입니다.

원칙

aisync는 토큰을 두 곳 어디에도 평문으로 쓰지 않습니다.

암호화 저장소

secrets.json은 패스프레이즈로 암호화합니다.

리포가 유출되더라도 패스프레이즈 없이는 토큰을 볼 수 없습니다. 다만 패스프레이즈가 짧으면 시간을 들여 맞혀 볼 수 있으니 길게 정하세요.

MCP 서버가 토큰을 받는 방법

받기를 하면 aisync는 토큰을 풀어서 쓰지 않고, 서버 정의를 이렇게 바꿔 씁니다.

명령으로 실행하는 서버는 aisync exec로 감쌉니다.

"slack": {
  "command": "/Users/you/.local/bin/aisync",
  "args": ["exec", "--repo", "you/aisync-config", "--", "npx", "-y", "@modelcontextprotocol/server-slack"],
  "env": { "SLACK_BOT_TOKEN": "{{secret:slack-bot}}" }
}

Claude Code가 이 서버를 띄우면 aisync가 참조를 풀어 원래 명령을 실행합니다. 값은 그 서버 프로세스에만 있습니다.

헤더로 인증하는 HTTP 서버에는 Claude Code의 headersHelper를 씁니다.

"github": {
  "type": "http",
  "url": "https://api.githubcopilot.com/mcp/",
  "headersHelper": "/Users/you/.local/bin/aisync headers --repo you/aisync-config 'Authorization=Bearer {{secret:github-auth}}'"
}

Claude Code가 연결할 때마다 이 명령을 실행해 헤더를 받습니다.

aisync exec와 aisync headers는 네트워크를 쓰지 않습니다. 받기를 할 때 내려받아 둔 secrets.json 사본(암호문 그대로)과 키체인의 키만 씁니다.

토큰이 URL 안에 있으면

https://…/mcp?token=…처럼 URL에 토큰이 들어간 서버는 평문 없이 처리할 방법이 없어서 받아들이지 않습니다. 헤더로 인증하도록 바꾸거나, capture --server로 그 서버를 빼고 올리세요.

파일 안의 토큰(BLOCKS)

settings.json, CLAUDE.md, 스킬 파일은 있는 그대로 올라갑니다. 그래서 그 안에 토큰이 보이면 올리기를 멈춥니다.

settings.json의 env에 둔 토큰은 Claude Code가 다른 통로로 받을 방법이 없습니다. 두 가지 중 하나를 고르세요.

토큰 관리

aisync secret list                 # 이름만 보여 줍니다
aisync secret set github-token     # 값은 입력받거나 표준 입력에서 읽습니다
aisync secret rm github-token
aisync secret prune --dry-run      # 어느 프로필도 쓰지 않는 토큰
aisync passwd                      # 패스프레이즈 바꾸기
aisync unlock                      # 이 컴퓨터에서 패스프레이즈 다시 입력

passwd로 패스프레이즈를 바꾸면 저장소 전체를 새로 암호화합니다. 다른 컴퓨터는 다음에 리포를 받은 뒤 aisync unlock을 한 번 해야 MCP 서버가 다시 뜹니다.

scan이 찾는 것

알려진 형식(Slack xoxb-, GitHub ghp_·github_pat_, OpenAI·Anthropic sk-, Vault hvs., AWS AKIA 등)과, 이름에 TOKEN·SECRET·KEY·PASSWORD·AUTH가 들어간 값 중 무작위 문자열처럼 보이는 것을 찾습니다. 규칙 기반이라 새로운 형식은 놓칠 수 있습니다. 올리기 전에 scan 결과를 한 번 읽어 보세요.

Claude Code는 ~/.claude/backups/에 .claude.json 백업을 몇 개 남겨 둡니다. 여기에는 aisync를 쓰기 전의 평문 토큰이 남아 있을 수 있고, scan이 local로 알려 줍니다. 오래된 백업은 Claude Code가 돌려 가며 지웁니다.

이 문서는 aisync 0.1 기준입니다.