[{"data":1,"prerenderedAt":513},["ShallowReactive",2],{"article-\u002Fclaude-code\u002Fcau-hinh-quyen":3},{"id":4,"title":5,"body":6,"category":494,"description":495,"draft":496,"extension":497,"level":498,"meta":499,"minutes":159,"navigation":500,"outcomes":501,"path":502,"pinned":496,"premium":496,"prereq":503,"quiz":504,"repo":494,"seo":505,"stem":506,"tags":507,"updatedAt":511,"video":494,"__hash__":512},"articles\u002Fclaude-code\u002Fcau-hinh-quyen.md","Cấu hình quyền (permissions)",{"type":7,"value":8,"toc":488},"minimark",[9,18,23,26,101,106,110,236,320,326,340,344,351,416,420,449,462,484],[10,11,12,13,17],"p",{},"Mặc định Claude Code hỏi bạn trước khi sửa file hay chạy lệnh. Bấm \"đồng ý\" mãi cho ",[14,15,16],"code",{},"npm test"," thì mệt; cho nó toàn quyền thì nguy hiểm. Quy tắc quyền là khoảng giữa",[19,20,22],"h2",{"id":21},"file-settings-nằm-ở-đâu","File settings nằm ở đâu",[10,24,25],{},"Thứ tự ưu tiên từ cao xuống thấp:",[27,28,29,45],"table",{},[30,31,32],"thead",{},[33,34,35,39,42],"tr",{},[36,37,38],"th",{},"File",[36,40,41],{},"Của ai",[36,43,44],{},"Commit?",[46,47,48,60,73,89],"tbody",{},[33,49,50,54,57],{},[51,52,53],"td",{},"Cấu hình do tổ chức quản lý",[51,55,56],{},"Công ty áp xuống",[51,58,59],{},"—",[33,61,62,67,70],{},[51,63,64],{},[14,65,66],{},".claude\u002Fsettings.local.json",[51,68,69],{},"Bạn, trong dự án này",[51,71,72],{},"Không (Claude Code tự loại khỏi git khi nó tạo file)",[33,74,75,80,83],{},[51,76,77],{},[14,78,79],{},".claude\u002Fsettings.json",[51,81,82],{},"Cả nhóm, trong dự án này",[51,84,85],{},[86,87,88],"strong",{},"Có",[33,90,91,96,99],{},[51,92,93],{},[14,94,95],{},"~\u002F.claude\u002Fsettings.json",[51,97,98],{},"Bạn, mọi dự án",[51,100,59],{},[10,102,103,104],{},"Khi bạn chọn \"Yes, and don't ask again\" cho một lệnh, quy tắc được lưu vào ",[14,105,66],{},[19,107,109],{"id":108},"cú-pháp","Cú pháp",[111,112,117],"pre",{"className":113,"code":114,"language":115,"meta":116,"style":116},"language-json shiki shiki-themes github-dark-dimmed","{\n  \"permissions\": {\n    \"allow\": [\n      \"Bash(npm run lint)\",\n      \"Bash(npm run test *)\"\n    ],\n    \"ask\": [\n      \"Bash(git push *)\"\n    ],\n    \"deny\": [\n      \"Read(.\u002F.env)\",\n      \"Read(.\u002F.env.*)\",\n      \"WebFetch(domain:example.com)\"\n    ]\n  }\n}\n","json","",[14,118,119,128,138,147,157,163,169,177,183,188,196,204,212,218,224,230],{"__ignoreMap":116},[120,121,124],"span",{"class":122,"line":123},"line",1,[120,125,127],{"class":126},"s1ain","{\n",[120,129,131,135],{"class":122,"line":130},2,[120,132,134],{"class":133},"sT8CT","  \"permissions\"",[120,136,137],{"class":126},": {\n",[120,139,141,144],{"class":122,"line":140},3,[120,142,143],{"class":133},"    \"allow\"",[120,145,146],{"class":126},": [\n",[120,148,150,154],{"class":122,"line":149},4,[120,151,153],{"class":152},"sP_-H","      \"Bash(npm run lint)\"",[120,155,156],{"class":126},",\n",[120,158,160],{"class":122,"line":159},5,[120,161,162],{"class":152},"      \"Bash(npm run test *)\"\n",[120,164,166],{"class":122,"line":165},6,[120,167,168],{"class":126},"    ],\n",[120,170,172,175],{"class":122,"line":171},7,[120,173,174],{"class":133},"    \"ask\"",[120,176,146],{"class":126},[120,178,180],{"class":122,"line":179},8,[120,181,182],{"class":152},"      \"Bash(git push *)\"\n",[120,184,186],{"class":122,"line":185},9,[120,187,168],{"class":126},[120,189,191,194],{"class":122,"line":190},10,[120,192,193],{"class":133},"    \"deny\"",[120,195,146],{"class":126},[120,197,199,202],{"class":122,"line":198},11,[120,200,201],{"class":152},"      \"Read(.\u002F.env)\"",[120,203,156],{"class":126},[120,205,207,210],{"class":122,"line":206},12,[120,208,209],{"class":152},"      \"Read(.\u002F.env.*)\"",[120,211,156],{"class":126},[120,213,215],{"class":122,"line":214},13,[120,216,217],{"class":152},"      \"WebFetch(domain:example.com)\"\n",[120,219,221],{"class":122,"line":220},14,[120,222,223],{"class":126},"    ]\n",[120,225,227],{"class":122,"line":226},15,[120,228,229],{"class":126},"  }\n",[120,231,233],{"class":122,"line":232},16,[120,234,235],{"class":126},"}\n",[27,237,238,248],{},[30,239,240],{},[33,241,242,245],{},[36,243,244],{},"Mẫu",[36,246,247],{},"Nghĩa",[46,249,250,263,277,290,300,310],{},[33,251,252,257],{},[51,253,254],{},[14,255,256],{},"Bash(npm run test *)",[51,258,259,260],{},"Lệnh bắt đầu bằng ",[14,261,262],{},"npm run test",[33,264,265,270],{},[51,266,267],{},[14,268,269],{},"Read(.\u002F.env)",[51,271,272,273,276],{},"File ",[14,274,275],{},".env"," trong thư mục dự án",[33,278,279,284],{},[51,280,281],{},[14,282,283],{},"Edit(src\u002F**)",[51,285,286,287],{},"Mọi file trong ",[14,288,289],{},"src\u002F",[33,291,292,297],{},[51,293,294],{},[14,295,296],{},"Read(~\u002F.ssh\u002F**)",[51,298,299],{},"Đường dẫn tính từ thư mục home",[33,301,302,307],{},[51,303,304],{},[14,305,306],{},"WebFetch(domain:github.com)",[51,308,309],{},"Tải trang từ một tên miền",[33,311,312,317],{},[51,313,314],{},[14,315,316],{},"mcp__so-viec-nha__*",[51,318,319],{},"Mọi công cụ của một MCP server",[10,321,322,325],{},[86,323,324],{},"Thứ tự xét:"," deny → ask → allow. Quy tắc cấm luôn thắng — một quy tắc allow hẹp không mở được ngoại lệ trong một quy tắc deny rộng",[10,327,328,329,332,333,336,337],{},"File settings là JSON nghiêm ngặt: không comment ",[14,330,331],{},"\u002F\u002F",", không dấu phẩy thừa. Sửa xong, chạy ",[14,334,335],{},"\u002Fstatus"," để xem file đã được nạp chưa. Muốn sửa bằng giao diện: ",[14,338,339],{},"\u002Fpermissions",[19,341,343],{"id":342},"chế-độ-quyền","Chế độ quyền",[10,345,346,347,350],{},"Đổi bằng ",[14,348,349],{},"Shift+Tab"," trong phiên:",[27,352,353,363],{},[30,354,355],{},[33,356,357,360],{},[36,358,359],{},"Chế độ",[36,361,362],{},"Hành vi",[46,364,365,376,386,396,406],{},[33,366,367,373],{},[51,368,369,372],{},[14,370,371],{},"default"," (Manual)",[51,374,375],{},"Hỏi khi dùng mỗi công cụ lần đầu",[33,377,378,383],{},[51,379,380],{},[14,381,382],{},"acceptEdits",[51,384,385],{},"Tự nhận sửa file và các lệnh file cơ bản trong thư mục dự án",[33,387,388,393],{},[51,389,390],{},[14,391,392],{},"plan",[51,394,395],{},"Chỉ đọc và lập kế hoạch, không sửa code",[33,397,398,403],{},[51,399,400],{},[14,401,402],{},"auto",[51,404,405],{},"Tự duyệt, có lớp kiểm tra an toàn chạy nền (nếu tài khoản có)",[33,407,408,413],{},[51,409,410],{},[14,411,412],{},"bypassPermissions",[51,414,415],{},"Bỏ qua gần hết lời hỏi — chỉ dùng trong môi trường cô lập",[19,417,419],{"id":418},"gợi-ý-khởi-đầu","Gợi ý khởi đầu",[421,422,423,430,440],"ul",{},[424,425,426,429],"li",{},[86,427,428],{},"allow",": lệnh lint, test, build của dự án",[424,431,432,435,436,439],{},[86,433,434],{},"ask",": ",[14,437,438],{},"git push",", lệnh deploy",[424,441,442,445,446,448],{},[86,443,444],{},"deny",": đọc ",[14,447,275],{}," và file khoá, lệnh xoá hàng loạt",[10,450,451,452,457,458],{},"Xem thêm: ",[453,454,456],"a",{"href":455},"\u002Fkhoa-hoc\u002Fan-toan\u002Fgiu-bi-mat","Giữ bí mật",", ",[453,459,461],{"href":460},"\u002Fkhoa-hoc\u002Fclaude-code-nang-cao\u002Fhooks","Hooks",[463,464,465],"canh-bao",{},[10,466,467,468,474,475,457,478,457,480,483],{},"Cú pháp đối chiếu ",[453,469,473],{"href":470,"rel":471},"https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fpermissions",[472],"nofollow","tài liệu chính thức"," ngày 30\u002F09\u002F2026. Quy tắc đường dẫn có nhiều trường hợp đặc biệt (",[14,476,477],{},"\u002F",[14,479,331],{},[14,481,482],{},"**",") — đọc kỹ tài liệu trước khi dựa vào một quy tắc deny để bảo vệ thứ quan trọng",[485,486,487],"style",{},"html pre.shiki code .s1ain, html code.shiki .s1ain{--shiki-default:#ADBAC7}html pre.shiki code .sT8CT, html code.shiki .sT8CT{--shiki-default:#8DDB8C}html pre.shiki code .sP_-H, html code.shiki .sP_-H{--shiki-default:#96D0FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":116,"searchDepth":140,"depth":140,"links":489},[490,491,492,493],{"id":21,"depth":130,"text":22},{"id":108,"depth":130,"text":109},{"id":342,"depth":130,"text":343},{"id":418,"depth":130,"text":419},null,"File settings nằm ở đâu, cú pháp quy tắc allow \u002F ask \u002F deny, và các chế độ quyền của Claude Code",false,"md","dev",{},true,[],"\u002Fclaude-code\u002Fcau-hinh-quyen",[],[],{"title":5,"description":495},"claude-code\u002Fcau-hinh-quyen",[508,509,510],"tra cứu","cấu hình","an toàn","2026-09-30","-kzHOSkImLGGuEABvgWfwfHY1zzQ69TGULojzkn8Wkg",1791566979398]