안녕하세요? 정리하는 개발자 워니즈입니다.
Claude Code 를 켜기만 하고 아무 명령도 치지 않았는데 토큰이 이미 나가고 있다는 사실을 알고 계셨나요?
이 글은 필자가 설치해둔 Claude Code 플러그인 열세 개가 세션마다 각각 몇 바이트씩 컨텍스트를 차지하는지 직접 재보고, 그 플러그인 토큰 중 무엇을 끄면 되는지를 정리한 글입니다. 여기 나오는 명령은 전부 파일을 읽기만 하는 것이라 그대로 따라 하셔도 설정이 바뀌거나 지워지는 일은 없는데요, 마지막에 실제로 끄는 절차만 따로 떼어 적었습니다.
【한 줄 요약】 플러그인 토큰은 세션이 시작될 때 스킬과 에이전트의 설명이 전부 컨텍스트에 올라가면서 나갑니다. 명령을 치지 않아도 켜져 있다는 것만으로 나가는 셈인데요, 필자가 재보니 켜둔 열두 개의 설명 합계가 7,762바이트인데 꺼둔 한 개가 혼자 12,482바이트로 더 컸고, 켜져 있으면서 호출 기록이 0회인 것이 네 개 있었습니다. 플러그인 토큰을 줄이는 순서는 재기, 안 쓰는 것 찾기, 필요할 때만 켜기 이렇게 3단계입니다.
- 재기: 플러그인마다 스킬과 에이전트의 description 바이트를 합산하면 상시 비용이 나온다
- 찾기: 설정 파일의 호출 기록으로 켜두고 한 번도 안 쓴 것을 골라낸다
- 끄기: 상시 켜기 대신 필요한 날만 켜는 방식으로 바꾼다
목차
1. Claude Code 플러그인은 세션마다 무엇을 올리나요?
2. 확인 1. 플러그인 토큰이 몇 바이트인지 잽니다
3. 직접 확인 1: 켠 열두 개보다 끈 한 개가 더 컸습니다
4. 확인 2. 쓰지도 않는데 켜져 있는 것을 찾습니다
5. 직접 확인 2: 호출 0회인 플러그인이 네 개였습니다
6. 확인 3. 상시 켜기를 필요할 때만 켜기로 바꿉니다
7. 직접 확인 3: 디스크에 지워지지 않은 클론이 6.8MB 남아 있었습니다
8. 이 측정이 못 잡는 것은 무엇인가요?
9. 토큰이 아깝다고 전부 꺼도 되나요?
10. 누구에게 필요하고 누구에게는 굳이인가

1. Claude Code 플러그인은 세션마다 무엇을 올리나요?
Claude Code 플러그인을 하나 설치하면 그 안에는 보통 스킬과 에이전트와 명령어가 들어 있는데요, 이 셋은 본문이 통째로 올라가는 것이 아니라 언제 쓰면 되는지를 적어둔 한 문단짜리 설명만 먼저 올라갑니다. 모델이 그 설명을 읽고 지금 상황에 맞겠다 싶을 때 본문을 마저 읽는 구조인데요, 평소에 나가는 플러그인 토큰은 그 한 문단이 전부입니다.
이 구조 자체는 잘 만든 것인데요, 스킬 본문이 수백 줄이어도 평소에는 한 문단만 자리를 차지하니 아껴 쓰는 쪽에 가깝습니다. 문제는 그 한 문단이 내가 그 플러그인을 부르든 안 부르든 매 세션 무조건 올라간다는 데 있습니다. 필자가 오늘 아침에 블로그 발행 작업을 하면서 켜둔 플러그인 중 실제로 쓴 것은 두 개였는데, 나머지 열 개의 설명도 그동안 계속 자리를 잡고 있었습니다.
여기서 짚어둘 것은 설명이 길수록 모델이 잘 골라 쓴다는 점입니다. 그래서 플러그인 제작자 입장에서는 설명을 넉넉히 쓸 이유가 있고, 실제로도 그렇게 쓰여 있습니다. 다시 말해 이건 누가 잘못 만들어서 생긴 문제가 아니라 설계가 그런 것이고, 사용자 쪽에서 켜고 끄는 것으로만 조절됩니다.
설치된 실물이 어디에 있는지부터 보겠습니다. 마켓플레이스 이름과 플러그인 이름과 버전 번호가 순서대로 겹쳐진 폴더 구조입니다.
ls ~/.claude/plugins/cache/
### 명령을 안 치면 토큰이 안 나가는 것 아닌가요?
세션이 열리는 순간 이미 나갑니다. 우리가 흔히 토큰을 쓴다고 말할 때 떠올리는 것은 내가 친 프롬프트와 모델이 뱉은 답인데요, 그보다 앞에 시스템 프롬프트와 도구 정의와 플러그인 설명이 먼저 자리를 잡습니다. 이 부분은 대화가 길어져도 앞쪽에 그대로 남아 있어서 매 요청마다 다시 계산에 들어갑니다.
그래서 플러그인 토큰은 한 번 줄여두면 그 세션 내내 효과가 이어집니다. 반대로 여기가 부풀어 있으면 짧은 질문 하나를 던져도 그 앞에 붙은 짐을 매번 같이 나르게 되는 셈입니다.
2. 확인 1. 플러그인 토큰이 몇 바이트인지 잽니다
첫 단계는 플러그인 토큰에 대한 짐작을 숫자로 바꾸는 것입니다. 어떤 플러그인이 무거운지는 설치 용량으로는 알 수 없는데요, 용량의 대부분은 문서와 코드이고 컨텍스트에 올라가는 것은 설명 문단뿐이기 때문입니다.
재는 방법 자체는 단순해서, 각 플러그인 폴더 아래 skills 와 agents 와 commands 를 훑어 파일 맨 앞의 description 항목만 뽑아 길이를 더하면 됩니다. 필자는 이걸 파이썬 스무 줄 남짓으로 돌렸는데요, 여기서 중요한 것은 어떤 도구를 쓰느냐가 아니라 무엇을 세느냐이고, 파일 개수를 세면 답이 안 나오고 설명의 길이를 세야 답이 나옵니다.
먼저 무엇이 켜져 있는지부터 확인합니다. 설정 파일의 enabledPlugins 항목이 정답이고, 폴더가 있다고 켜진 것이 아닙니다.
jq '.enabledPlugins' ~/.claude/settings.json
이 명령의 결과에서 값이 false 인 항목은 파일은 그대로 있지만 컨텍스트에는 안 올라가는 상태입니다. 필자의 경우 열세 개 중 한 개가 false 였는데요, 그 한 개가 이 글의 결론을 만들었습니다.
3. 직접 확인 1: 켠 열두 개보다 끈 한 개가 더 컸습니다
측정 결과를 옮기면 아래와 같았습니다. 스킬과 에이전트와 명령어의 설명을 전부 합산한 값이고, 단위는 바이트입니다.
| 플러그인 | 상태 | 스킬 | 에이전트 | 설명 합계 |
|---|---|---|---|---|
| claude-seo 2.2.5 | 꺼짐 | 25 | 18 | 12,482 |
| superpowers | 켜짐 | 14 | 0 | 1,861 |
| session-wrap | 켜짐 | 3 | 5 | 1,770 |
| clarify | 켜짐 | 3 | 0 | 1,576 |
| korean-skills | 켜짐 | 3 | 0 | 1,542 |
| claude-md-management | 켜짐 | 1 | 0 | 387 |
| claude-mem | 켜짐 | 1 | 0 | 285 |
| frontend-design | 켜짐 | 1 | 0 | 234 |
| ralph-loop | 켜짐 | 0 | 0 | 107 |
| context7 | 켜짐 | 0 | 0 | 0 |
| 언어 서버 3종 | 켜짐 | 0 | 0 | 0 |

켜둔 열두 개를 다 합쳐도 7,762바이트인데, 꺼둔 한 개가 혼자 12,482바이트였습니다. 무게를 정하는 것은 플러그인의 개수가 아니라 그 안에 든 스킬과 에이전트의 개수입니다.
배수로 따지면 1.6배인데요, 이 한 줄이 이번 측정에서 얻은 가장 값진 정보였습니다. 플러그인 토큰을 줄이겠다고 목록에서 개수를 세는 것은 방향이 틀렸다는 뜻이기 때문입니다.
claude-seo 쪽을 더 들여다보니 항목이 마흔세 개였고 설명 하나의 평균이 290바이트, 중앙값이 274바이트였습니다. 가장 긴 것은 496바이트였고요. 한 개씩 보면 어느 것도 과하지 않은데 마흔세 개가 모이니 그렇게 된 것입니다. 제작자가 낭비한 것이 아니라 기능이 많은 것입니다.
토큰으로 환산하면 얼마인지도 궁금하실 텐데요, 여기는 정확히 말씀드리기 어렵습니다. 영어와 한글이 섞여 있고 모델마다 토크나이저가 달라서, 바이트를 토큰으로 바꾸는 고정 계수가 없습니다. 영문 위주 텍스트에서 흔히 쓰는 3.5바이트 기준을 대면 꺼둔 한 개가 3,500토큰 안팎이고 켜둔 전부가 2,200토큰 안팎인데, 이건 어림값이고 실측이 아니라는 점을 그대로 적어둡니다.
### 설치 용량이 큰 플러그인이 무거운 건가요?
관계가 거의 없었습니다. 필자 기준으로 디스크를 가장 많이 차지한 것은 9.7MB짜리였는데 그 안에 켜진 플러그인은 없었고, 반대로 설명 합계 1위였던 claude-seo 는 4.9MB 로 세 번째였습니다.

용량의 대부분은 마크다운 문서와 파이썬 스크립트인데요, 이것들은 내가 그 기능을 부를 때만 읽힙니다. 그래서 디스크는 디스크대로, 컨텍스트는 컨텍스트대로 따로 재야 합니다. 하나로 뭉뚱그리면 엉뚱한 것을 지우게 됩니다.
4. 확인 2. 쓰지도 않는데 켜져 있는 것을 찾습니다
무게를 알았으면 다음은 값어치를 봅니다. 무거워도 매일 쓰는 것은 그대로 두는 게 맞고, 가벼워도 한 번도 안 쓴 것은 끄는 게 맞습니다.
여기서 좋은 점은 Claude Code 가 호출 횟수를 이미 세고 있다는 것입니다. 따로 로그를 켤 필요가 없고 설정 파일 한 곳만 열면 됩니다. 마지막으로 쓴 시각까지 함께 들어 있어서 며칠 놀았는지도 바로 나옵니다.
jq '.pluginUsage' ~/.claude.json
usageCount 가 호출 누계이고 lastUsedAt 이 마지막 사용 시각인데요, 시각은 밀리초 단위라 천으로 나눠야 사람이 읽는 형식이 됩니다. 필자는 이 두 값과 앞에서 잰 설명 바이트를 나란히 놓고 봤습니다. 무게와 값어치를 한 표에 놓아야 판단이 됩니다.
5. 직접 확인 2: 호출 0회인 플러그인이 네 개였습니다
결과가 예상보다 한쪽으로 쏠려 있었습니다.
| 플러그인 | 호출 누계 | 마지막 사용 | 판단 |
|---|---|---|---|
| claude-mem | 169,071 | 오늘 | 유지 |
| ralph-loop | 6,821 | 오늘 | 유지 |
| session-wrap | 3,051 | 오늘 | 유지 |
| superpowers | 1,217 | 오늘 | 유지 |
| korean-skills | 32 | 오늘 | 유지 |
| clarify | 4 | 41일 전 | 후보 |
| frontend-design | 3 | 44일 전 | 후보 |
| claude-md-management | 1 | 45일 전 | 후보 |
| context7 | 0 | 77일 전 | 후보 |
| 언어 서버 3종 | 0 | 37일 전 | 보류 |
상위 네 개가 호출의 거의 전부를 만들고 있었고, 켜져 있으면서 호출 기록이 0회인 것이 네 개였습니다. 그중 하나는 설치하고 77일 동안 한 번도 안 불렀습니다. 필자는 이 목록을 보기 전까지 그런 게 있는 줄도 몰랐는데요, 설치할 때는 다 쓸 것 같았기 때문입니다.
다만 여기서 조심할 것이 하나 있습니다. 호출 0회를 곧바로 무용지물로 읽으면 안 됩니다. 위 표의 언어 서버 세 개는 호출이 0회인데 판단을 보류로 적었는데요, 이것들은 내가 명령으로 부르는 물건이 아니라 특정 언어 파일을 열 때 배경에서 붙는 종류라 호출 계수기에 안 잡힐 수 있기 때문입니다. 실제로 설명 바이트도 0이어서 컨텍스트에 올리는 짐이 없었습니다.

즉 끄는 후보는 호출 0회이면서 설명 바이트가 큰 것입니다. 두 조건 중 하나만 보면 멀쩡한 것을 끄게 됩니다. 두 축을 교차해서 놓으면 판단이 네 칸으로 갈립니다.
| 설명이 무겁다 | 설명이 가볍다 | |
|---|---|---|
| 자주 쓴다 | 그대로 켜둔다 | 그대로 켜둔다 |
| 거의 안 쓴다 | 필요한 날만 켜기로 옮긴다 | 굳이 건드릴 값이 없다 |
| 한 번도 안 썼다 | 끈다 | 그대로 둬도 손해가 거의 없다 |
이 표에서 플러그인 토큰이 실제로 줄어드는 칸은 왼쪽 아래 두 칸뿐입니다. 오른쪽 열은 아무리 정리해도 줄어드는 양이 세 자리 바이트라 시간을 쓸 자리가 아닌데요, 필자도 처음에는 목록에 있는 것을 전부 손보려다가 이 표를 그리고 나서 대상을 둘로 줄였습니다.
### 호출 횟수가 적으면 무조건 끄면 되나요?
빈도보다 대체 비용을 먼저 봐야 합니다. 한 달에 한 번 부르지만 그 한 번에 없으면 사람이 두 시간을 손으로 메워야 하는 도구가 있고, 자주 뜨지만 없어도 그만인 도구가 있습니다. 위 표에서 필자가 후보로만 표시하고 아직 안 끈 것들이 그 경우인데요, 한글 문서를 다듬는 쪽은 호출이 32회로 적지만 없으면 그 자리를 사람이 메워야 합니다.
그래서 필자는 두 단으로 나눠서 봅니다. 호출 0회이고 설명이 무거운 것은 바로 끄고, 호출은 적지만 대체가 어려운 것은 상시 켜기 대신 필요한 날만 켜는 쪽으로 옮깁니다. 다음 절이 그 이야기입니다.
6. 확인 3. 상시 켜기를 필요할 때만 켜기로 바꿉니다
여기가 플러그인 토큰이 실제로 줄어드는 자리입니다. 앞의 두 단계는 재는 일과 고르는 일이었고, 이제부터 상태를 바꿉니다.

방법은 /plugin 명령으로 목록에서 켜고 끄는 것인데요, 결과는 설정 파일의 enabledPlugins 값이 true 와 false 로 바뀌는 것입니다. 여기서 중요한 것은 끈다고 파일이 지워지지 않는다는 점입니다. 폴더는 그대로 남아 있고 컨텍스트에만 안 올라가서, 다시 켜면 설치 과정 없이 즉시 돌아옵니다.
필자는 그래서 SEO 점검용 플러그인을 이 방식으로 씁니다. 블로그 글을 점검하는 날에만 켜고 끝나면 끄는데요, 호출 기록을 보니 지난 기간 동안 스물세 번 썼고 마지막 사용이 이틀 전이었습니다. 한 달에 며칠만 쓰는 도구가 열두 개짜리 나머지 전부보다 무거웠으니, 이 하나를 옮긴 것만으로 평소 짐이 절반 아래로 내려간 셈입니다.
이 방식의 유일한 불편은 켜는 것을 잊는 것입니다. 필요할 때 도구가 없으면 그때서야 켜야 하는데요, 필자는 이걸 불편으로 안 보고 오히려 그 도구를 쓸 차례라는 것을 스스로 확인하는 순간으로 두고 있습니다.
7. 직접 확인 3: 디스크에 지워지지 않은 클론이 6.8MB 남아 있었습니다
여기는 토큰과는 상관없는 곁가지인데요, 재는 김에 캐시 폴더 전체를 훑다가 나온 것이라 같이 적습니다.
du -sh ~/.claude/plugins/cache/*
캐시 전체가 33MB 였고 그중 이름이 temp_git_ 으로 시작하는 폴더가 여덟 개, 합쳐서 6.8MB 였습니다. 마켓플레이스를 등록하거나 갱신할 때 만들어졌다가 지워지지 않은 임시 복제본으로 보입니다. 열어보니 일부는 문서와 설정 파일이 그대로 남아 있었고, 일부는 겉으로는 비어 보였는데 감춰진 저장소 데이터만 남은 껍데기였습니다.

이것들은 enabledPlugins 어디에도 없어서 컨텍스트에는 영향이 없습니다. 다시 말해 토큰 문제는 아니고 정리 문제입니다. 다만 이런 게 쌓여 있으면 나중에 어떤 폴더가 진짜인지 헷갈리게 되니, 캐시를 볼 일이 있을 때 같이 봐두시면 좋겠습니다.
지우실 때는 이름이 temp_git_ 으로 시작하는 것만 골라서 지우시고, 지우기 전에 enabledPlugins 목록과 대조해 그 이름이 없는지 한 번 더 확인하시길 권합니다. 필자는 이번에는 대조까지만 하고 삭제는 미뤘습니다.
8. 이 측정이 못 잡는 것은 무엇인가요?
솔직하게 한계를 적어둡니다. 이 방식으로 나오는 플러그인 토큰 숫자는 컨텍스트에 올라가는 짐의 상대적 크기이지 청구서가 아닙니다.
가장 먼저 걸리는 것은 바이트를 토큰으로 바꾸는 정확한 계수가 없다는 것인데요, 한글과 영어가 섞이면 그 차이가 더 벌어집니다. 그래서 이 표는 어느 플러그인이 다른 것보다 몇 배 무거운지를 견주는 데는 쓸 수 있지만, 이번 달에 얼마를 아꼈다는 식으로 옮기기는 어렵습니다.
세는 범위도 생각보다 좁습니다. 이 측정은 설명 문단만 셉니다. 플러그인이 세션 시작에 끼어들어 무언가를 실행하는 훅을 갖고 있다면 그건 따로 봐야 하는데요, 훅이 도는 것 자체와 그 결과가 대화에 들어오는 몫은 이 표에 아예 안 잡힙니다. 훅을 확인하는 절차는 필자가 Claude Code 플러그인 설치 전 확인 3가지 글에 따로 정리해두었습니다.
도구 실행 결과가 차지하는 몫도 여기에는 없습니다. 실제로 긴 세션에서 자리를 가장 많이 먹는 것은 플러그인 설명이 아니라 파일을 읽고 명령을 돌린 결과인데요, 이 글은 그 앞에 미리 깔려 있는 고정 비용만 다룹니다. 고정 비용은 한 번 줄이면 그 세션 내내 효과가 이어지고 변동 비용은 그때그때 관리해야 해서, 손대는 방식 자체가 다릅니다.
마지막으로 필자가 잰 것은 어디까지나 필자의 설치 구성입니다. 마켓플레이스마다 들어 있는 스킬 개수가 달라서 여러분의 표는 다르게 나옵니다. 그래서 이 글에서 가져가실 것은 12,482라는 숫자가 아니라 재는 순서입니다.
9. 토큰이 아깝다고 전부 꺼도 되나요?
권하지 않습니다. 플러그인 설명이 자리를 차지하는 이유는 모델이 그걸 읽고 지금 쓸 도구를 골라내기 위해서인데요, 전부 꺼버리면 그 자리에서 일어나야 할 판단을 결국 사람이 대신 하게 됩니다. 무엇을 아꼈는지는 눈에 보이는데 무엇을 잃었는지는 안 보여서, 줄이기만 하면 이겼다고 착각하기 쉬운 자리입니다.
필자가 두는 기준은 이렇습니다. 오늘 이 세션에서 부를 가능성이 조금이라도 있으면 켜둡니다. 몇 주째 안 불렀고 앞으로도 특정한 날에만 부를 것 같으면 그날만 켜는 쪽으로 옮깁니다. 한 번도 안 불렀고 설명까지 무거우면 그때만 끕니다.
그리고 끈 뒤에 며칠은 불편한지 지켜봅니다. 끄자마자 손으로 하게 되는 일이 늘어났다면 그건 끄지 말았어야 할 것이고, 아무 일도 안 일어났다면 잘 끈 것입니다. 플러그인 토큰 숫자는 후보를 좁혀줄 뿐이고 마지막 판단은 며칠 써보는 것으로 갈립니다.
10. 누구에게 필요하고 누구에게는 굳이인가
정리하면 이렇습니다. Claude Code 플러그인은 켜져 있다는 것만으로 매 세션 설명을 컨텍스트에 올리고, 그 무게는 설치 용량이 아니라 스킬과 에이전트의 개수로 정해집니다. 플러그인 토큰을 줄이는 순서는 설명 바이트를 재고, 호출 기록으로 안 쓰는 것을 고르고, 상시 켜기를 필요한 날만 켜기로 옮기는 3단계입니다. 끄는 기준은 호출 0회와 무거운 설명을 동시에 만족하는 것 하나뿐이고, 둘 중 하나만 보고 판단하면 멀쩡한 것을 끄게 됩니다.
이 점검이 필요한 분은 플러그인을 다섯 개 넘게 켜두신 분이고, 특히 스킬이 스무 개 넘게 든 큰 플러그인을 하나라도 갖고 계신 분입니다. 필자의 경우 그 한 개가 나머지 열두 개보다 무거웠는데요, 이런 편중은 표를 만들어보기 전까지는 보이지 않습니다.
굳이 안 하셔도 되는 경우는 켜둔 플러그인이 두세 개이고 그것들을 매일 쓰시는 경우입니다. 그래도 jq 로 호출 기록을 한 번 열어보는 데는 몇 초면 되니, 설치하고 잊어버린 것이 있는지만 확인해보시는 것을 권해드리고 싶습니다.
설치하기 전에 훅과 네트워크와 텔레메트리를 어떻게 보는지는 플러그인 공급망 검토 절차에 정리해두었고, 이 글에서 예로 든 SEO 플러그인을 실제로 어떻게 쓰는지는 claude-seo 사용법 총정리에 적어두었습니다.
플러그인 구조와 설정 항목의 공식 설명은 Claude Code 플러그인 문서에서 확인하실 수 있습니다.
여기까지 읽어주셔서 감사합니다. 다음에도 직접 재본 것만 적어보겠습니다.