연결 인증: OAuth와 API 키

OAuth는 시스템이 대신 인증해 주고, API 키는 인증을 키에 묶어 둔 것. 클라이언트별 방식과 키 보안 최소선.

AI를 내 메모리에 붙이려면 먼저 “이 사람이 맞다”는 확인이 있어야 한다. 아무나 남의 기억을 읽고 쓸 수는 없으니까. 이 확인을 하는 방법이 두 가지다. OAuth와 API 키. 둘의 차이는 하나로 요약된다.

OAuth는 시스템이 대신 인증해 준다. API 키는 인증을 키 하나에 묶어 둔 것이다.

OAuth: 계정으로 한 번 승인하면 끝

AI 앱에서 AiAkiv를 추가하면 로그인 창이 뜬다. 내 AiAkiv 계정으로 한 번 승인하면 그다음부터는 시스템이 알아서 신원을 확인한다.

  • 신원은 내 계정에 묶인다. 앱이 아니라 "나"로 인증된다.
  • 내 손에 남는 비밀값이 없다. 복사해 둘 것도, 관리할 것도 없다.
  • 갱신·회수를 시스템이 맡는다. 계정 쪽에서 정리하면 접근도 함께 정리된다.

API 키: 인증을 키에 묶어 둔 것

콘솔에서 키를 발급받아 앱 설정에 붙여 넣는 방식이다. 로그인 창은 없다. 대신 그 키 자체가 신분증이 된다.

  • 키를 가진 쪽이 곧 나다. 앱이든 사람이든, 키만 있으면 내 권한으로 접근한다.
  • 그래서 키는 비밀번호와 같은 무게로 다뤄야 한다(아래 키 보안).
  • 발급·회수는 내가 직접 한다. 콘솔의 API 키 관리(콘솔 안내).

콘솔에서 키는 두 가지로 낼 수 있다.

키 저장 위치 쓰임
동적 키 지금의 저장 대상(Main) 을 따라간다 콘솔에서 Main을 바꾸면 이 키의 저장 위치도 함께 바뀐다
프로젝트 키 특정 프로젝트에 고정 그 프로젝트로만 읽고 쓴다: 폴더·앱마다 대상을 못 박고 싶을 때

스코프: 키로 할 수 있는 일의 종류

연결에는 스코프가 붙는다. 그 연결로 할 수 있는 일의 종류다.

스코프 할 수 있는 일 OAuth API 키
read 기억 읽기·검색 있음 기본으로 있음
write 기억 저장·수정 있음 기본으로 있음
manage AI가 콘솔 앱으로 계정을 관리(팀·연결·프로젝트·저장 대상·카드 편집) 있음 발급할 때 체크한 키만
  • manage 는 API 키에서 기본으로 꺼져 있다. 키를 발급할 때 "AI 콘솔 관리 허용 (manage)" 을 체크해야 붙는다. 이 체크 칸은 프로젝트 관리(프로젝트 카드의 프로젝트 고정 API 키 발급)와 API 키 관리 두 곳에 있다.
  • 체크 없이 발급한 키(이 기능 전에 발급한 키 전부)로는 AI가 콘솔 앱의 읽기만 할 수 있다. 편집을 시키려면 체크해서 새로 발급하고 앱 설정의 키도 바꾼다. 같은 대상에 새로 발급하면 이전 키는 폐기된다.
  • manage 가 있어도 AI가 실제로 할 수 있는 일은 콘솔 참고 → AI 권한에서 켠 것뿐이다(AI에게 콘솔 일 시키기).
  • 스코프도 내 팀 역할이 천장이다. 그 팀에서 viewer이면 OAuth든 API 키든 manage 를 받지 못한다. 공개 읽기·연결처럼 읽기 전용으로 붙은 세션에서는 write 와 manage 가 함께 빠진다.
  • manage 가 있어도 AI에게 콘솔 일을 시키는 것은 앱 기능이 있는 연결에서만 된다. 폴더 연결, API 키 연결, 플러그인으로 설치한 연결(Claude Code, Cursor), 주소 https://mcp.aiakiv.com/mcp?apps=all 로 붙인 연결(이 주소로 추가한 Claude 계정 커넥터, Codex 연결(설치 프롬프트로 연결한 것) 등)이 그렇고, ChatGPT의 공식 플러그인이나 ?apps=all 없는 주소로 붙인 로그인 연결에서는 콘솔 일을 웹 콘솔에서 직접 한다 → 앱 실행 도구.

무엇을 쓰나: 기본은 OAuth

클라이언트가 OAuth를 지원한다면 고민 없이 OAuth를 쓴다. 관리할 비밀값이 없고, 계정 정책을 그대로 따르기 때문이다.

방식 클라이언트
OAuth (권장) Claude Web, Claude Desktop, Claude Code, ChatGPT와 ChatGPT classic(플러그인 설치), Codex(설치 프롬프트), Cursor, Grok
API 키 (유일한 설정) Gemini CLI, ChatGPT의 폴더 고정(.codex/config.toml), Antigravity

⚠ ChatGPT와 ChatGPT classic 은 다른 앱이다. 이름이 비슷하고 둘이 함께 깔린다. 붙이는 방법은 둘 다 같다. 앱 안의 플러그인 디렉터리에서 AiAkiv Memory 를 설치하고 OAuth 로 로그인한다. 다른 것은 폴더 고정이다. OAuth 로는 폴더마다 프로젝트를 고정하지 못하므로, 폴더 고정은 ChatGPT 앱에서 프로젝트 고정 API 키로 한다 → ChatGPT 연결.

아래쪽 셋은 선택이 아니다. 다만 API 키뿐인 이유는 저마다 다르다.

클라이언트 왜 API 키뿐인가
Gemini CLI OAuth 로그인 세션이 유지되지 않는다
ChatGPT의 폴더 고정 OAuth 로는 폴더마다 프로젝트를 고정하지 못한다. 플러그인 설치는 OAuth 로 붙지만 계정 전체가 Main을 따라간다
Antigravity 설정이 앱 전체에 하나뿐이라 폴더로 나눌 수 없다: 그래서 키가 프로젝트를 정한다

클라이언트별 실제 설정은 설치 안내를 따른다.

키 보안

키가 곧 신원이므로, 유출은 내 기억에 대한 접근 자체가 넘어가는 것을 뜻한다. 아래는 지켜야 할 최소선이다.

  • 발급 순간 한 번만 보인다. 그때 안전한 곳(비밀번호 관리자 등)에 옮겨 둔다. 다시 열어볼 수 없다.
  • 같은 대상에 새로 발급하면 이전 키는 자동으로 폐기된다. 그래서 재발급이 곧 회수다: 유출이 의심되면 즉시 새로 발급하면 된다.
  • 공유하지 않는다. 채팅·이슈·문서에 붙여 넣지 않는다. AI에게도 넘기지 않는다.
  • 코드 저장소에 올리지 않는다. 설정 파일에 키가 들어간다면 그 파일을 커밋에서 제외한다(.gitignore).
  • 키가 내 권한을 넘지는 못한다. 키의 접근 범위는 내 팀 역할이 천장이다. 읽기 권한뿐인 사람의 키로 쓰기가 되지는 않는다.
  • 애초에 기억 안에 키를 저장하지 않는다: 무엇을 저장하나.

자주 헷갈리는 것

  • “OAuth인데 왜 프로젝트를 바꾸면 다시 로그인하라고 하나요?” 일부 OAuth 클라이언트(Claude Code·Cursor 등)는 저장 대상을 바꿀 때 재인증이 필요하다. 정상 동작이다.
  • “키를 넣었는데 저장이 엉뚱한 데로 가요.” 동적 키는 Main을 따라간다. 대상을 고정하고 싶으면 프로젝트 키를 쓰거나 폴더 바인딩을 건다 (폴더 바인딩 · 팀과 프로젝트).
  • “API 키로 붙은 AI가 콘솔 편집을 못 한다고 해요.” 그 키에 manage 스코프가 없다. "AI 콘솔 관리 허용" 을 체크해 새로 발급한다(위 스코프). OAuth로 붙었는데 같은 말을 하면 그 연결에 앱 기능이 있는지부터 본다. ChatGPT의 공식 플러그인과 ?apps=all 없는 주소로 붙인 로그인 연결(예전에 그렇게 추가한 Claude 계정 커넥터 등)에는 없다(앱 실행 도구). 앱 기능이 있는 연결이면 다시 연결한다.
  • “키를 잃어버렸어요.” 복구는 없다. 새로 발급하면 이전 키는 폐기되고 새 키로 이어서 쓰면 된다.

다음