세무사 사무소에서 Claude Code를 안전하게 쓰는 법: 고객 데이터 익명화와 권한 설정
일본 세무사 사무소를 위한 고객 원본 격리, 익명화, 권한 제한, AI 입력 전 검사 절차를 설명합니다.
일본의 세무사 사무소에서 고객사의 시산표나 급여 CSV를 Claude Code에 전달하기 전에 회사명만 지우면 된다고 판단하면 나중에 다시 확인할 일이 생깁니다. 대표자 이름, 이메일 주소, 계좌번호, 거래처명, 마이넘버가 다른 열이나 파일명에 남아 자료의 주인을 추정할 수 있기 때문입니다. 가장 먼저 고칠 곳은 프롬프트가 아닙니다. 원본 폴더와 AI 작업 폴더의 경계입니다.
예를 들어 월간 코멘트를 작성할 때 Claude Code가 원본 CSV를 열 필요는 없습니다. 회사명을 ‘고객사 A’로, 매출을 ‘1,000만 엔에서 1,500만 엔’ 같은 범위로 바꾼 작업용 JSON만 있어도 확인 질문을 만들 수 있습니다. 세액, 신고 판단, 실제 전송은 사람이 맡습니다.
이 글에서는 일본 세무사 사무소가 고객 데이터를 원본과 격리하고, 익명화한 작업 사본만 Claude Code에 전달하는 흐름을 만듭니다. 권한 설정만 안전의 근거로 삼지 않고 입력 전 검사와 사람의 승인을 겹쳐 적용합니다. 주된 다음 단계는 사무소 안의 역할과 승인 절차까지 정하는 교육 및 상담입니다.
이 글의 핵심
- 원본은
raw-client-data/, AI에 전달할 사본은ai-work/로 나누고 Claude Code가 원본을 읽지 못하게 설정합니다. - 익명화는 이름만 지우는 작업이 아닙니다. 연락처, 계좌, 식별번호, 거래처, 지나치게 정확한 금액, 자유 서술도 확인합니다.
- Claude Code에는 익명화 후 분류, 차이표, 확인 질문, 코멘트 초안을 맡깁니다. 세무 판단, 전송, 보존 기간, 예외 승인은 사람이 결정합니다.
- Use case는 월간 코멘트, 자료 미제출 안내 메일, 신고 전 체크리스트의 세 가지입니다.
- ROI는 건당 준비 시간, 되돌림 횟수, 입력 전 검사에서 차단된 건수, 승인에 걸린 시간으로 측정합니다.
업무 흐름: 원본을 열게 하기 전에 작업 사본 만들기
세무사 사무소의 작업 폴더를 원본, 변환 처리, AI 작업, 승인된 출력의 네 영역으로 나눕니다. 원본에는 회계 CSV, 급여대장, 신고 자료, 고객사 이메일을 둡니다. AI 작업 폴더에는 목적에 꼭 필요한 항목만 남긴 JSON, Markdown, CSV를 둡니다. 승인된 출력은 담당자 이름과 확인일을 붙여 별도로 보관합니다.
| 폴더 | 넣는 자료 | Claude Code의 처리 방식 |
|---|---|---|
raw-client-data/ | 고객사에서 받은 원본 | 읽기와 쓰기 모두 거부 |
transform/ | 익명화 스크립트와 항목표 | 사람이 내용을 확인한 뒤 실행 |
ai-work/ | 가명 처리하고 범위화한 작업 사본 | 읽기와 쓰기 허용 |
approved-output/ | 사람이 승인한 문안과 체크표 | 사람이 저장하고 전송 |
첫 번째 작업은 AI에 전달하는 목적을 한 문장으로 쓰는 것입니다. ‘월간 보고서 문장을 작성한다’는 범위가 너무 넓습니다. ‘매출 범위, 매출총이익률의 전월 차이, 미수금 건수를 바탕으로 대표에게 확인할 질문 세 개를 만든다’까지 좁힙니다. 목적이 좁을수록 전달할 항목도 줄어듭니다.
다음으로 항목표를 만듭니다. 회사명, 성명, 주소, 전화번호, 이메일, 계좌, 마이넘버는 삭제 대상입니다. 거래처명, 드문 업종, 정확한 매출, 자유 서술도 가명이나 범위로 바꿉니다. 누가 언제 어떤 규칙으로 변환했는지도 기록합니다.
일본 개인정보보호위원회는 클라우드 서비스 이용이 개인 데이터 처리 위탁에 해당하는 경우 등의 유의점을 주의 안내에서 제시합니다. 이용 서비스의 안전관리 조치, 계약상 역할, 위탁처 감독을 사무소 측이 확인한다는 전제가 있습니다. 마이넘버가 포함된 특정 개인정보는 사업자용 가이드라인을 별도로 확인해야 합니다. 이 글의 설정 예시는 법령이나 계약 검토를 대신하지 않습니다.
Claude Code에 맡길 범위와 사람이 판단할 범위
Claude Code에 맡기는 범위는 익명화한 자료를 정렬하고, 누락을 찾고, 확인 질문과 초안을 만드는 데까지입니다. 예를 들어 ‘매출 범위는 전월보다 올랐지만 매출총이익률은 내려갔다’, ‘미수금 건수가 2건 늘었다’는 사실을 바탕으로 담당자가 고객사에 확인할 질문을 만들게 합니다. 원래 회사명이나 정확한 계좌 잔액은 필요하지 않습니다.
사람이 판단할 범위는 세무상 결론, 수치, 고객사에 질문할 표현, 수신자, 보존 기간, 삭제, 예외 대응입니다. AI가 단정한 내용을 그대로 보내지 않습니다. 근거 자료와 적용 요건을 세무사가 확인하고 승인합니다.
권한도 두 겹으로 생각합니다. Claude Code의 Read/Edit 거부는 내장 도구를 대상으로 합니다. 공식 권한 설정 문서는 Bash의 자식 프로세스까지 같은 방법으로 막히는 것은 아니므로 운영체제 수준에서 제한하는 샌드박스를 함께 사용하도록 설명합니다. 권한 규칙 평가 순서는 deny, ask, allow입니다. 먼저 원본을 거부한 다음 작업 폴더만 허용합니다.
세 가지 Use case
Use case 1: 월간 코멘트의 확인 질문 만들기
- 입력: 고객사 ID, 매출 범위, 매출총이익률의 전월 차이, 미수금 건수, 담당자가 적은 사실 메모.
- 출력: 고객사에 확인할 질문 세 개, 월간 코멘트 초안, 근거로 사용한 입력 항목.
- 사람의 확인: 회계 수치, 세무상 평가, 고객사 고유 사정, 전송 문구, 수신자를 승인합니다.
정확한 매출액이나 회사명을 전달하지 않아도 코멘트의 구조는 만들 수 있습니다. Claude Code에는 ‘증감을 단정하지 말고, 입력에 없는 이유를 보충하지 말며, 확인 질문으로 바꾼다’고 지시합니다. 담당자는 원본을 보면서 질문의 우선순위를 정합니다. 월간 보고서 전체 구성은 세무사 사무소의 월간 보고서 글에서 별도로 다룹니다.
Use case 2: 자료 미제출 안내 메일 초안 만들기
- 입력: 고객사 A, 대상 월, 제출되지 않은 자료의 종류, 희망 회신일, 제출 방법 선택지.
- 출력: 제목, 본문, 목록으로 정리한 미제출 자료, 회신 시 주의사항.
- 사람의 확인: 실제 미제출 자료, 기한, 수신자, 첨부파일, 다른 회사명의 혼입을 확인합니다.
자료 미제출 안내 메일에서는 문장 표현보다 수신자 오류와 고객사명 잔존이 사고로 이어지기 쉽습니다. AI 작업 사본에는 실명을 넣지 말고, 승인 후 이메일 시스템에서 삽입합니다. 고객사 이메일과 확인 체크리스트에서 다루는 문안 작성보다 먼저 이 입력 경계를 둡니다.
Use case 3: 신고 전 체크리스트의 누락 찾기
- 입력: 가명 처리한 법인 구분, 대상 절차, 자료 범주, 수령 완료 플래그, 확인 담당자의 역할.
- 출력: 미수령 자료, 담당자에게 되돌릴 질문, 승인란을 포함한 체크리스트 초안.
- 사람의 확인: 신고 의무, 기한, 필요 서류, 적용 요건, 전자 신고, 최종 제출을 판단합니다.
여기서도 Claude Code에 신고 가능 여부를 결정하게 하지 않습니다. 체크리스트 항목을 기존 절차와 대조하고 누락 후보를 제시하게 합니다. 사람은 세목, 사업연도, 신고 상태, 특례 요건을 원본으로 확인합니다. 출력에는 ‘확인자’, ‘확인일’, ‘근거 자료’ 항목을 남깁니다.
복사해서 쓸 수 있는 프롬프트
다음 프롬프트는 ai-work/에 둔 익명화 자료만 읽는 것을 전제로 합니다. 실명이나 정확한 식별번호를 프롬프트에 추가하지 마십시오.
당신은 세무사 사무소의 월간 확인 업무를 보조합니다.
./ai-work/client-C017.json 파일만 읽고 다음 순서로 출력하십시오.
1. 입력에 적힌 사실
2. 입력만으로 판단할 수 없는 사항
3. 고객사에 확인할 질문 세 개
4. 월간 코멘트 초안
5. 사람이 원본으로 확인할 항목
제약:
- 세무 판단을 단정하지 않는다
- 입력에 없는 회사명, 인물명, 금액, 이유를 보충하지 않는다
- 이메일 전송, 파일 삭제, 외부 통신을 하지 않는다
- 개인정보로 보이는 값을 발견하면 처리를 중단하고 항목명만 보고한다
- 출력 마지막에 "세무사 확인 전・전송 금지"라고 쓴다
프롬프트를 실행하기 전에 작업 사본에 예상한 항목만 있는지 기계적으로 검사합니다. 이 글과 함께 둔 scripts/check-tax-accountant-ai-input.mjs는 JSON, CSV, Markdown, 텍스트를 검사합니다. 성명이나 연락처로 보이는 항목명, 이메일, 전화번호, 12자리 식별번호, 우편번호를 찾으면 종료 코드 1로 멈춥니다.
node scripts/check-tax-accountant-ai-input.mjs
node scripts/check-tax-accountant-ai-input.mjs ./ai-work
if ($LASTEXITCODE -ne 0) { throw "AI 입력 전 검사에서 처리를 중단했습니다" }
이 검사는 정보 유출 방지를 보장하지 않습니다. 자유 서술의 의미나 여러 항목을 조합한 재식별 가능성까지 판단할 수 없으므로 검사 후에도 사람이 작업 사본을 열어 확인해야 합니다.
실제로 동작하는 권한 설정
프로젝트의 .claude/settings.json에서는 원본을 먼저 거부하고 AI 작업 폴더만 허용합니다. /raw-client-data/** 앞의 /는 Claude Code 설정에서 프로젝트 루트를 기준으로 합니다. 컴퓨터의 파일 시스템 루트를 가리키는 절대 경로는 //로 시작하므로 둘을 혼동하지 마십시오.
{
"permissions": {
"deny": [
"Read(/raw-client-data/**)",
"Edit(/raw-client-data/**)",
"Read(/secrets/**)",
"Edit(/secrets/**)",
"Bash(git push *)"
],
"allow": [
"Read(/ai-work/**)",
"Edit(/ai-work/**)",
"Bash(node scripts/check-tax-accountant-ai-input.mjs *)"
]
},
"sandbox": {
"enabled": true,
"failIfUnavailable": true,
"allowUnsandboxedCommands": false,
"filesystem": {
"denyRead": ["./raw-client-data", "./secrets"],
"denyWrite": ["./raw-client-data", "./secrets"]
}
}
}
공식 샌드박스 설명에 따르면 샌드박스를 시작할 수 없을 때 기본 동작은 경고 후 샌드박스 없이 계속 실행하는 것입니다. 여기서는 failIfUnavailable: true로 중단하고 allowUnsandboxedCommands: false로 우회 방법을 비활성화합니다. 샌드박스 지원은 macOS, Linux, WSL2를 전제로 합니다. Windows에서 운영하는 사무소는 WSL2 안에서 실행하고, 설정이 적용되지 않는 단말기에서는 고객사 데이터를 다루지 않습니다.
설정 후에는 ‘접근이 거부되는지’도 시험합니다. 가상 데이터만 넣은 검증용 폴더에서 raw-client-data/ 읽기가 거부되고 ai-work/의 작업 사본만 읽을 수 있는지 확인합니다. 설정 파일이 존재한다는 이유만으로 합격 처리하지 않습니다. Claude Code 권한 설정 가이드도 deny 규칙의 설계 방법을 보충합니다.
Pitfall: 익명화와 권한 설정이 무너지는 상황
첫 번째 함정은 회사명만 지우면 익명화가 끝났다고 생각하는 것입니다. 대표자명, 드문 거래, 정확한 금액, 자유 서술이 따로 남아 고객사를 드러낼 수 있습니다. 목적별로 허용 항목을 정하고 변환 후 파일만 ai-work/로 내보내는 방식으로 고칩니다.
두 번째 함정은 Read를 거부하면 Bash도 멈춘다고 생각하는 것입니다. 내장 Read/Edit 규칙과 자식 프로세스 제한은 서로 다른 통제입니다. 샌드박스의 denyRead와 denyWrite를 겹쳐 적용하고, 샌드박스를 시작할 수 없으면 failIfUnavailable로 처리를 중단합니다.
세 번째 함정은 검사 결과가 0건이면 안전하다고 결정하는 것입니다. 정규식은 이미지, PDF 속 문자, 표기 차이, 의미를 조합해야 알 수 있는 개인정보를 놓칩니다. 허용 항목 방식, 입력 전 검사, 사람의 육안 확인, 처리 로그, 삭제 기한을 한 묶음으로 운영해야 합니다.
네 번째 함정은 동작 확인에 실제 데이터를 쓰는 것입니다. 테스트 로그나 화면 캡처에 값이 남습니다. 가상 데이터로 거부와 허용을 시험하고, 사고가 발생했을 때의 중단 절차도 종이 한 장에 적습니다.
ROI를 작은 범위에서 측정하기
처음 2주 동안은 고객사 한 곳, 월간 코멘트 한 종류만 측정합니다. 도입 전에 ‘원본 확인부터 초안 완성까지 걸린 시간’, ‘담당자의 수정 횟수’, ‘소장의 되돌림 횟수’를 5회 기록합니다. 도입 후에도 같은 항목을 기록하고 입력 전 검사에서 멈춘 건수를 추가합니다.
예를 들어 월 20건을 처리하고 건당 준비 시간이 18분에서 11분으로 줄면 한 달에 140분을 줄인 것입니다. 다만 승인 시간이 늘었다면 그만큼 빼야 합니다. 매출 환산뿐 아니라 오발송, 다른 회사명 혼입, 원본 접근을 사전에 막은 건수도 기록합니다. 속도만 추구하면 익명화를 생략하려는 압력이 생기기 때문입니다.
도입 전후의 건수 x (준비 시간 + 승인 시간 + 되돌림 시간)과 차단 건수를 나란히 놓고 속도와 안전을 함께 봅니다.
자주 묻는 질문
Q. 고객사명을 가명으로 바꾸면 그대로 사용할 수 있습니까?
아닙니다. 대표자명, 주소, 이메일, 계좌, 마이넘버, 거래처, 정확한 금액, 자유 서술도 확인합니다. 여러 값을 조합해 고객사를 추정할 수 없는지 사람이 마지막으로 확인합니다.
Q. 로컬에서 실행하면 안전합니까?
로컬이라는 장소만으로 결정되지 않습니다. 이용 서비스의 데이터 처리, 인증, 단말기, 로그, 외부 통신, 권한, 계약을 확인해야 합니다. 원본에 접근할 수 없는 경계를 먼저 만듭니다.
Q. 검사 스크립트가 PDF와 이미지도 볼 수 있습니까?
이 글의 스크립트는 JSON, CSV, Markdown, 텍스트만 처리합니다. PDF와 이미지는 지원하지 않는 대상으로 차단하고 별도의 승인된 변환 절차를 거칩니다. 지원하지 않는 형식을 조용히 통과시키지 않습니다.
Q. 마이넘버를 익명화해 AI에 전달해도 됩니까?
이 글에서는 개별 판단을 내리지 않습니다. 원칙적으로 작업 사본에 포함하지 않고, 사무소 책임자가 일본 개인정보보호위원회 가이드라인, 계약, 이용 목적, 사내 규정을 확인해야 합니다.
교육 및 상담으로 경계 정하기
세무사 사무소에서 Claude Code를 사용할 때 설정 파일만 만들어서는 충분하지 않습니다. 누가 익명화하고, 누가 예외를 승인하며, 어디에 출력을 저장할지가 불명확하면 실제 운영에서 무너집니다. 원본, 작업 사본, AI 출력, 승인된 문안의 책임자를 나눌 필요가 있습니다.
교육 및 상담에서는 실제 데이터를 반입하지 않는 방식으로 고객사 데이터 항목표, 폴더 경계, 권한 설정, 입력 전 검사, 승인표를 설계합니다. 첫 상담에서는 기존 폴더 이름과 만들고 싶은 결과물만 확인하며 원본 자체는 공유하지 않습니다.
실제로 시험한 결과
이 글에서는 가상의 고객사 JSON만 사용해 scripts/check-tax-accountant-ai-input.mjs의 자체 테스트를 실행했습니다. 안전한 샘플은 탐지 0건, 대표자명 항목, 이메일, 12자리 식별번호가 포함된 위험 샘플은 중단하도록 설계했습니다. 코드, 명령어, 내부 링크, 공식 URL, CTA, frontmatter, 대표 이미지도 게시 전 검사 대상에 포함했습니다.
오늘 할 첫 작업은 빈 raw-client-data/와 ai-work/를 만들고 가상 파일로 ‘원본 영역은 거부되고 작업 사본 영역만 읽을 수 있는지’ 확인하는 테스트입니다. 합격한 뒤에도 익명화한 작업 사본부터 시작합니다.
관련 글
보험대리점 사고 접수를 Claude Code로 다루기: 증권번호와 진단서를 AI에 넘기지 않는 법
보험대리점 사고 접수에서 익명화CSV, 첨부 분리, 권한, 사람 검토를 함께 설계하는 절차입니다.
Claude Code를 팀에 도입하기 전에 만드는 '위험 대장'의 속살
Claude Code를 개인 실험으로 끝내지 않고 팀에 도입하기 위해, 권한·CI·배포 사고를 막는 위험 대장 만드는 법을 실제 예시와 코드로 설명합니다.
세무사 사무소의 고객사 안내 메일·결산 점검 체크리스트를 Claude Code로 만드는 실무법
세무사 사무소에서 매달 반복되는 고객사 메일과 점검 리스트 작성을 Claude Code로 템플릿화하는 실무 순서. 복붙 프롬프트·체크리스트·검증 스크립트를 그대로 쓸 수 있게 정리했습니다.
무료 PDF: Claude Code 치트시트
이메일을 입력하면 명령, 리뷰 습관, 안전한 워크플로를 정리한 PDF를 받을 수 있습니다.
개인정보를 안전하게 관리하며 스팸을 보내지 않습니다.
작성자 소개
Masa
Claude Code 실무 워크플로와 팀 도입을 검증하는 엔지니어입니다.