Claude Code 5월 릴리스 정리: 백그라운드 에이전트와 플러그인 운영에서 바뀐 것
Claude Code의 5월 중순 릴리스는 화려한 모델 발표보다 실무 운영에 가까운 변화가 많습니다. 백그라운드 세션, 플러그인 의존성, hook 동작, worktree 처리, Windows/WSL 안정성 같은 항목이 집중적으로 개선됐습니다. 코딩 에이전트를 “개인 생산성 도구”로만 쓰는 단계에서는 사소해 보일 수 있지만, 팀 단위로 장시간 작업을 맡기는 환경에서는 이런 변경이 더 중요합니다.
이번 업데이트를 한 줄로 정리하면 “에이전트가 오래 돌아가고, 플러그인이 늘어나고, 세션이 분기되는 상황에서 깨지던 운영 구멍을 메웠다”입니다. 개발자는 새 기능 목록을 외우기보다, 어떤 운영 규칙을 바꿔야 하는지 봐야 합니다.
백그라운드 세션 보존이 중요한 이유
최근 릴리스에는 background session이 idle에서 깨어난 뒤에도 model과 effort level을 보존하는 변경이 포함됐습니다. 또 /bg가 MCP config, settings, add-dir, plugin-dir, strict MCP config를 유지하도록 개선됐고, fallback model이나 permission mode 관련 수정도 들어갔습니다.
이건 장시간 에이전트 작업에서 큰 차이를 만듭니다. 예전에는 백그라운드로 보낸 세션이 다시 깨어날 때 설정이 바뀌거나, MCP 서버 구성이 빠지거나, 권한 모드가 예상과 다르게 초기화되는 문제가 발생할 수 있었습니다. 그 결과 “같은 프롬프트인데 이어서 하면 다른 환경에서 돈다”는 재현성 문제가 생깁니다.
실무에서는 백그라운드 세션을 다음처럼 다뤄야 합니다.
- 세션 시작 시 모델, effort, permission mode를 명시한다.
- MCP 설정 파일과 추가 디렉터리를 세션 로그에 남긴다.
- 백그라운드로 넘긴 뒤 재개할 때
/status나 설정 요약을 확인한다. - 장시간 작업은 중간 산출물(diff, 테스트 결과, TODO)을 파일로 남기게 한다.
에이전트가 오래 돌수록 “기억”보다 “재개 가능한 상태”가 중요합니다.
플러그인 의존성 enforcement가 주는 신호
이번 변경에는 claude plugin disable이 다른 활성 플러그인이 의존하는 플러그인을 바로 끄지 못하게 막는 기능이 들어갔습니다. 반대로 enable 시 transitive dependency를 force-enable하는 흐름도 생겼습니다. 플러그인 marketplace browse pane에는 projected context cost, 즉 per-turn과 per-invocation token estimate도 표시됩니다.
이 두 가지는 같은 방향을 가리킵니다. 플러그인은 단순 확장 기능이 아니라 에이전트 실행 환경의 일부입니다. 어떤 플러그인을 켰는지에 따라 사용 가능한 도구, 주입되는 문맥, 토큰 비용, 실패 지점이 달라집니다.
팀에서 플러그인을 운영한다면 다음 표를 만들어야 합니다.
| 항목 | 기록할 내용 |
|---|---|
| 플러그인 이름 | 정확한 패키지명과 버전 |
| 의존성 | 함께 켜져야 하는 플러그인 |
| 제공 기능 | skill, MCP server, LSP server, hook |
| 권한 | 파일 읽기, 쓰기, 네트워크, 셸 실행 |
| 예상 비용 | context cost, 호출 빈도 |
| 비활성화 절차 | disable chain과 롤백 방법 |
이 문서가 없으면 장애가 났을 때 “어떤 플러그인 때문에 에이전트가 이상한 도구를 호출했는지” 추적하기 어렵습니다.
hook 동작 변경은 자동화 안정성과 연결된다
릴리스 노트에는 stop hook이 반복 block될 때 8회 이후 경고와 함께 턴을 종료하는 수정, hook 설정 오류 메시지 개선, subagentStart/subagentStop hook 관련 개선이 보입니다. hook은 코딩 에이전트 자동화에서 자주 과소평가됩니다. 하지만 실제로는 보안 승인, 테스트 실행, 알림, 로그 수집, 산출물 검증이 hook에 걸리는 경우가 많습니다.
문제는 hook이 잘못 작성되면 에이전트가 무한 루프에 빠지거나, 작업이 끝났는데 완료 처리가 되지 않거나, 권한 프롬프트가 반복되는 상황이 생긴다는 점입니다. 이번 수정은 이런 실패 모드를 줄이는 방향입니다.
hook을 운영할 때는 최소한 다음 원칙을 적용하세요.
- hook은 성공, 실패, block을 명확히 구분한다.
- 같은 block이 반복될 때 사람이 볼 수 있는 메시지를 남긴다.
- hook 안에서 긴 네트워크 호출을 직접 수행하지 않는다.
- 테스트 실행 hook은 timeout을 둔다.
- subagent hook은 부모 세션 ID와 작업명을 함께 기록한다.
자동화는 “붙이는 것”보다 “멈출 수 있게 만드는 것”이 더 어렵습니다.
worktree와 파일 손실 방지 변경을 봐야 하는 이유
이번 릴리스에는 worktree cleanup이 git worktree remove 실패 시 rm -rf로 fallback하지 않도록 바뀐 항목이 있습니다. 이건 작지만 중요한 안전장치입니다. gitignored 파일이나 작업 중인 파일이 삭제될 수 있는 경로를 막았기 때문입니다.
코딩 에이전트는 branch, worktree, 임시 디렉터리를 자주 만듭니다. 이때 사람이 직접 만든 로컬 설정, .env.local, fixture, 임시 테스트 데이터가 섞이면 정리 단계가 위험해집니다. 그래서 팀 규칙은 명확해야 합니다.
- 에이전트 작업 디렉터리와 사람이 쓰는 디렉터리를 분리한다.
- gitignored 파일을 에이전트가 삭제하지 못하게 한다.
- worktree 제거 전 변경 파일 목록을 출력한다.
- cleanup 실패 시 강제 삭제 대신 사람 승인으로 넘긴다.
- 중요한 로컬 파일은 repo 밖 안전한 위치에 둔다.
이번 변경은 Claude Code 자체의 안전성을 올렸지만, 팀 규칙까지 자동으로 해결해주지는 않습니다.
Windows와 WSL 개선은 엔터프라이즈 도입에 중요하다
PowerShell execution policy, Windows Terminal paste, WSL 렌더링, network-drive working directory deadlock 같은 수정도 포함됐습니다. macOS 개발자에게는 눈에 덜 띄지만, 회사 환경에서는 Windows가 여전히 많습니다. 에이전트 도구가 Windows에서 불안정하면 일부 팀원만 자동화를 쓰고, 나머지는 다른 방식으로 일하면서 결과가 갈라집니다.
특히 PowerShell 5.x, PowerShell 7, WSL, 네트워크 드라이브가 섞인 조직은 다음을 확인해야 합니다.
- 표준 셸을 PowerShell 7 또는 WSL 중 하나로 정한다.
- legacy PowerShell에서
&&체이닝을 피한다. - 네트워크 드라이브 작업은 로컬 clone 후 진행한다.
- 터미널 렌더링 문제를 재현할 수 있는 최소 케이스를 남긴다.
- 에이전트 CLI 버전을 팀 단위로 맞춘다.
AI 코딩 도구는 모델 성능만으로 도입되지 않습니다. OS별 안정성과 디버깅 가능성이 실제 도입률을 결정합니다.
오늘 적용할 체크리스트
- Claude Code 백그라운드 세션 시작 시 model, effort, permission mode를 기록한다.
- 플러그인별 의존성, 권한, context cost 표를 만든다.
- hook은 timeout, 반복 block 처리, 사람이 읽을 메시지를 포함한다.
- worktree cleanup 전에 변경 파일 목록을 확인하도록 규칙화한다.
- Windows/WSL 사용자는 표준 셸과 CLI 버전을 맞춘다.
- 장시간 작업은 중간 산출물을 파일로 남기게 한다.
- 에이전트가 완료됐다고 말해도 diff, 테스트, 로그 중 최소 하나로 검증한다.
이번 Claude Code 릴리스는 “더 똑똑한 모델”보다 “덜 깨지는 운영”에 가깝습니다. 팀에서 에이전트를 실무에 붙이고 있다면 이런 변경이 생산성보다 먼저 확인해야 할 항목입니다.