[{"data":1,"prerenderedAt":1421},["ShallowReactive",2],{"guide:/guides/claude-code-settings-json":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"tag":10,"date":11,"body":12,"_type":1415,"_id":1416,"_source":1417,"_file":1418,"_stem":1419,"_extension":1420},"/guides/claude-code-settings-json","guides",false,"","Your Claude Code settings.json, explained","Where Claude Code reads settings from, and the two keys that matter most day to day: permissions (what the agent may do on its own) and hooks (what runs on each event).","Config","2026-08-15",{"type":13,"children":14,"toc":1403},"root",[15,56,63,68,144,149,160,195,397,431,436,546,565,576,604,717,730,736,741,879,885,897,1278,1291,1297,1325,1331,1357,1363,1397],{"type":16,"tag":17,"props":18,"children":19},"element","p",{},[20,23,29,31,38,40,46,48,54],{"type":21,"value":22},"text","Most of what makes Claude Code feel ",{"type":16,"tag":24,"props":25,"children":26},"em",{},[27],{"type":21,"value":28},"yours",{"type":21,"value":30}," lives in a ",{"type":16,"tag":32,"props":33,"children":35},"code",{"className":34},[],[36],{"type":21,"value":37},"settings.json",{"type":21,"value":39},": what it is allowed to do without asking, and what runs when it acts. This guide covers where those files live, how they layer, and the two keys you will touch most: ",{"type":16,"tag":32,"props":41,"children":43},{"className":42},[],[44],{"type":21,"value":45},"permissions",{"type":21,"value":47}," and ",{"type":16,"tag":32,"props":49,"children":51},{"className":50},[],[52],{"type":21,"value":53},"hooks",{"type":21,"value":55},".",{"type":16,"tag":57,"props":58,"children":60},"h2",{"id":59},"where-settings-come-from",[61],{"type":21,"value":62},"Where settings come from",{"type":16,"tag":17,"props":64,"children":65},{},[66],{"type":21,"value":67},"Claude Code layers settings from a few places, most specific winning:",{"type":16,"tag":69,"props":70,"children":71},"ul",{},[72,92,109,134],{"type":16,"tag":73,"props":74,"children":75},"li",{},[76,82,84,90],{"type":16,"tag":77,"props":78,"children":79},"strong",{},[80],{"type":21,"value":81},"User settings",{"type":21,"value":83},": ",{"type":16,"tag":32,"props":85,"children":87},{"className":86},[],[88],{"type":21,"value":89},"~/.claude/settings.json",{"type":21,"value":91},", applied to every project on your machine.",{"type":16,"tag":73,"props":93,"children":94},{},[95,100,101,107],{"type":16,"tag":77,"props":96,"children":97},{},[98],{"type":21,"value":99},"Project settings",{"type":21,"value":83},{"type":16,"tag":32,"props":102,"children":104},{"className":103},[],[105],{"type":21,"value":106},".claude/settings.json",{"type":21,"value":108}," in a repository, shared with your team through version control.",{"type":16,"tag":73,"props":110,"children":111},{},[112,117,118,124,126,132],{"type":16,"tag":77,"props":113,"children":114},{},[115],{"type":21,"value":116},"Local project settings",{"type":21,"value":83},{"type":16,"tag":32,"props":119,"children":121},{"className":120},[],[122],{"type":21,"value":123},".claude/settings.local.json",{"type":21,"value":125},", for personal overrides you keep out of git. Claude Code adds it to your ",{"type":16,"tag":32,"props":127,"children":129},{"className":128},[],[130],{"type":21,"value":131},".gitignore",{"type":21,"value":133}," for you.",{"type":16,"tag":73,"props":135,"children":136},{},[137,142],{"type":16,"tag":77,"props":138,"children":139},{},[140],{"type":21,"value":141},"Managed settings",{"type":21,"value":143},", deployed by an administrator, which win over everything else.",{"type":16,"tag":17,"props":145,"children":146},{},[147],{"type":21,"value":148},"Because they layer, put team-wide rules in the project file and personal tweaks in your user or local file. When two files set the same key, the more specific one replaces it rather than merging deeply, so keep each file focused on what belongs there.",{"type":16,"tag":57,"props":150,"children":152},{"id":151},"permissions-what-the-agent-may-do-on-its-own",[153,158],{"type":16,"tag":32,"props":154,"children":156},{"className":155},[],[157],{"type":21,"value":45},{"type":21,"value":159},": what the agent may do on its own",{"type":16,"tag":17,"props":161,"children":162},{},[163,165,170,172,178,180,186,187,193],{"type":21,"value":164},"The ",{"type":16,"tag":32,"props":166,"children":168},{"className":167},[],[169],{"type":21,"value":45},{"type":21,"value":171}," key controls which actions Claude can take without stopping to ask. It holds lists of rules, typically ",{"type":16,"tag":32,"props":173,"children":175},{"className":174},[],[176],{"type":21,"value":177},"allow",{"type":21,"value":179},", ",{"type":16,"tag":32,"props":181,"children":183},{"className":182},[],[184],{"type":21,"value":185},"ask",{"type":21,"value":47},{"type":16,"tag":32,"props":188,"children":190},{"className":189},[],[191],{"type":21,"value":192},"deny",{"type":21,"value":194},":",{"type":16,"tag":196,"props":197,"children":201},"pre",{"className":198,"code":199,"language":200,"meta":7,"style":7},"language-json shiki shiki-themes github-light github-dark","{\n  \"permissions\": {\n    \"allow\": [\n      \"Bash(npm run test:*)\",\n      \"Bash(git status)\",\n      \"Read(./src/**)\"\n    ],\n    \"ask\": [\n      \"Bash(git push:*)\"\n    ],\n    \"deny\": [\n      \"Read(./.env)\",\n      \"Read(./secrets/**)\",\n      \"Bash(rm:*)\"\n    ]\n  }\n}\n","json",[202],{"type":16,"tag":32,"props":203,"children":204},{"__ignoreMap":7},[205,217,232,246,261,274,283,292,305,314,322,335,348,361,370,379,388],{"type":16,"tag":206,"props":207,"children":210},"span",{"class":208,"line":209},"line",1,[211],{"type":16,"tag":206,"props":212,"children":214},{"style":213},"--shiki-default:#24292E;--shiki-dark:#E1E4E8",[215],{"type":21,"value":216},"{\n",{"type":16,"tag":206,"props":218,"children":220},{"class":208,"line":219},2,[221,227],{"type":16,"tag":206,"props":222,"children":224},{"style":223},"--shiki-default:#005CC5;--shiki-dark:#79B8FF",[225],{"type":21,"value":226},"  \"permissions\"",{"type":16,"tag":206,"props":228,"children":229},{"style":213},[230],{"type":21,"value":231},": {\n",{"type":16,"tag":206,"props":233,"children":235},{"class":208,"line":234},3,[236,241],{"type":16,"tag":206,"props":237,"children":238},{"style":223},[239],{"type":21,"value":240},"    \"allow\"",{"type":16,"tag":206,"props":242,"children":243},{"style":213},[244],{"type":21,"value":245},": [\n",{"type":16,"tag":206,"props":247,"children":249},{"class":208,"line":248},4,[250,256],{"type":16,"tag":206,"props":251,"children":253},{"style":252},"--shiki-default:#032F62;--shiki-dark:#9ECBFF",[254],{"type":21,"value":255},"      \"Bash(npm run test:*)\"",{"type":16,"tag":206,"props":257,"children":258},{"style":213},[259],{"type":21,"value":260},",\n",{"type":16,"tag":206,"props":262,"children":264},{"class":208,"line":263},5,[265,270],{"type":16,"tag":206,"props":266,"children":267},{"style":252},[268],{"type":21,"value":269},"      \"Bash(git status)\"",{"type":16,"tag":206,"props":271,"children":272},{"style":213},[273],{"type":21,"value":260},{"type":16,"tag":206,"props":275,"children":277},{"class":208,"line":276},6,[278],{"type":16,"tag":206,"props":279,"children":280},{"style":252},[281],{"type":21,"value":282},"      \"Read(./src/**)\"\n",{"type":16,"tag":206,"props":284,"children":286},{"class":208,"line":285},7,[287],{"type":16,"tag":206,"props":288,"children":289},{"style":213},[290],{"type":21,"value":291},"    ],\n",{"type":16,"tag":206,"props":293,"children":295},{"class":208,"line":294},8,[296,301],{"type":16,"tag":206,"props":297,"children":298},{"style":223},[299],{"type":21,"value":300},"    \"ask\"",{"type":16,"tag":206,"props":302,"children":303},{"style":213},[304],{"type":21,"value":245},{"type":16,"tag":206,"props":306,"children":308},{"class":208,"line":307},9,[309],{"type":16,"tag":206,"props":310,"children":311},{"style":252},[312],{"type":21,"value":313},"      \"Bash(git push:*)\"\n",{"type":16,"tag":206,"props":315,"children":317},{"class":208,"line":316},10,[318],{"type":16,"tag":206,"props":319,"children":320},{"style":213},[321],{"type":21,"value":291},{"type":16,"tag":206,"props":323,"children":325},{"class":208,"line":324},11,[326,331],{"type":16,"tag":206,"props":327,"children":328},{"style":223},[329],{"type":21,"value":330},"    \"deny\"",{"type":16,"tag":206,"props":332,"children":333},{"style":213},[334],{"type":21,"value":245},{"type":16,"tag":206,"props":336,"children":338},{"class":208,"line":337},12,[339,344],{"type":16,"tag":206,"props":340,"children":341},{"style":252},[342],{"type":21,"value":343},"      \"Read(./.env)\"",{"type":16,"tag":206,"props":345,"children":346},{"style":213},[347],{"type":21,"value":260},{"type":16,"tag":206,"props":349,"children":351},{"class":208,"line":350},13,[352,357],{"type":16,"tag":206,"props":353,"children":354},{"style":252},[355],{"type":21,"value":356},"      \"Read(./secrets/**)\"",{"type":16,"tag":206,"props":358,"children":359},{"style":213},[360],{"type":21,"value":260},{"type":16,"tag":206,"props":362,"children":364},{"class":208,"line":363},14,[365],{"type":16,"tag":206,"props":366,"children":367},{"style":252},[368],{"type":21,"value":369},"      \"Bash(rm:*)\"\n",{"type":16,"tag":206,"props":371,"children":373},{"class":208,"line":372},15,[374],{"type":16,"tag":206,"props":375,"children":376},{"style":213},[377],{"type":21,"value":378},"    ]\n",{"type":16,"tag":206,"props":380,"children":382},{"class":208,"line":381},16,[383],{"type":16,"tag":206,"props":384,"children":385},{"style":213},[386],{"type":21,"value":387},"  }\n",{"type":16,"tag":206,"props":389,"children":391},{"class":208,"line":390},17,[392],{"type":16,"tag":206,"props":393,"children":394},{"style":213},[395],{"type":21,"value":396},"}\n",{"type":16,"tag":17,"props":398,"children":399},{},[400,402,407,409,414,416,421,423,429],{"type":21,"value":401},"Each rule names a tool and, in parentheses, a pattern for what it may touch. ",{"type":16,"tag":32,"props":403,"children":405},{"className":404},[],[406],{"type":21,"value":177},{"type":21,"value":408}," lets matching actions run unattended; ",{"type":16,"tag":32,"props":410,"children":412},{"className":411},[],[413],{"type":21,"value":185},{"type":21,"value":415}," forces a prompt even in a permissive mode; ",{"type":16,"tag":32,"props":417,"children":419},{"className":418},[],[420],{"type":21,"value":192},{"type":21,"value":422}," blocks them outright. Anything not covered falls back to asking you, which is where the ",{"type":16,"tag":32,"props":424,"children":426},{"className":425},[],[427],{"type":21,"value":428},"Notification",{"type":21,"value":430}," hook comes in (below).",{"type":16,"tag":17,"props":432,"children":433},{},[434],{"type":21,"value":435},"A few details worth knowing:",{"type":16,"tag":69,"props":437,"children":438},{},[439,475,488,505],{"type":16,"tag":73,"props":440,"children":441},{},[442,444,450,452,458,460,466,468,474],{"type":21,"value":443},"For ",{"type":16,"tag":32,"props":445,"children":447},{"className":446},[],[448],{"type":21,"value":449},"Bash",{"type":21,"value":451},", the pattern matches the start of the command, and ",{"type":16,"tag":32,"props":453,"children":455},{"className":454},[],[456],{"type":21,"value":457},":*",{"type":21,"value":459}," is the wildcard: ",{"type":16,"tag":32,"props":461,"children":463},{"className":462},[],[464],{"type":21,"value":465},"Bash(npm run test:*)",{"type":21,"value":467}," covers ",{"type":16,"tag":32,"props":469,"children":471},{"className":470},[],[472],{"type":21,"value":473},"npm run test -- --watch",{"type":21,"value":55},{"type":16,"tag":73,"props":476,"children":477},{},[478,480,486],{"type":21,"value":479},"For file tools, the pattern is a path glob relative to the project, so ",{"type":16,"tag":32,"props":481,"children":483},{"className":482},[],[484],{"type":21,"value":485},"Edit(./src/**)",{"type":21,"value":487}," scopes edits to your source tree.",{"type":16,"tag":73,"props":489,"children":490},{},[491,496,498,503],{"type":16,"tag":32,"props":492,"children":494},{"className":493},[],[495],{"type":21,"value":192},{"type":21,"value":497}," always wins over ",{"type":16,"tag":32,"props":499,"children":501},{"className":500},[],[502],{"type":21,"value":177},{"type":21,"value":504},", which makes it the right place for secrets.",{"type":16,"tag":73,"props":506,"children":507},{},[508,514,516,522,524,530,531,537,538,544],{"type":16,"tag":32,"props":509,"children":511},{"className":510},[],[512],{"type":21,"value":513},"additionalDirectories",{"type":21,"value":515}," lets a session read outside the project root, and ",{"type":16,"tag":32,"props":517,"children":519},{"className":518},[],[520],{"type":21,"value":521},"defaultMode",{"type":21,"value":523}," sets the starting permission mode (",{"type":16,"tag":32,"props":525,"children":527},{"className":526},[],[528],{"type":21,"value":529},"default",{"type":21,"value":179},{"type":16,"tag":32,"props":532,"children":534},{"className":533},[],[535],{"type":21,"value":536},"acceptEdits",{"type":21,"value":179},{"type":16,"tag":32,"props":539,"children":541},{"className":540},[],[542],{"type":21,"value":543},"plan",{"type":21,"value":545},").",{"type":16,"tag":17,"props":547,"children":548},{},[549,551,556,558,563],{"type":21,"value":550},"Tighten ",{"type":16,"tag":32,"props":552,"children":554},{"className":553},[],[555],{"type":21,"value":192},{"type":21,"value":557}," around secrets and destructive commands, and widen ",{"type":16,"tag":32,"props":559,"children":561},{"className":560},[],[562],{"type":21,"value":177},{"type":21,"value":564}," for the safe, repetitive things (running your test script, reading source) so the agent stops interrupting you for them. That single change is the biggest day-to-day speed-up available.",{"type":16,"tag":57,"props":566,"children":568},{"id":567},"hooks-run-a-command-on-each-event",[569,574],{"type":16,"tag":32,"props":570,"children":572},{"className":571},[],[573],{"type":21,"value":53},{"type":21,"value":575},": run a command on each event",{"type":16,"tag":17,"props":577,"children":578},{},[579,580,585,587,594,596,602],{"type":21,"value":164},{"type":16,"tag":32,"props":581,"children":583},{"className":582},[],[584],{"type":21,"value":53},{"type":21,"value":586}," key runs your own command at each point in a session: start, tool use, needing you, finishing. It is a topic of its own; start with the ",{"type":16,"tag":588,"props":589,"children":591},"a",{"href":590},"/guides/claude-code-hooks",[592],{"type":21,"value":593},"complete guide to Claude Code hooks",{"type":21,"value":595}," and the ",{"type":16,"tag":588,"props":597,"children":599},{"href":598},"/guides/claude-code-hook-events",[600],{"type":21,"value":601},"reference of every hook event",{"type":21,"value":603},". A minimal example:",{"type":16,"tag":196,"props":605,"children":607},{"className":198,"code":606,"language":200,"meta":7,"style":7},"{\n  \"hooks\": {\n    \"Stop\": [\n      { \"hooks\": [{ \"type\": \"command\", \"command\": \"notify-send 'Claude Code' 'Run finished'\" }] }\n    ]\n  }\n}\n",[608],{"type":16,"tag":32,"props":609,"children":610},{"__ignoreMap":7},[611,618,630,642,696,703,710],{"type":16,"tag":206,"props":612,"children":613},{"class":208,"line":209},[614],{"type":16,"tag":206,"props":615,"children":616},{"style":213},[617],{"type":21,"value":216},{"type":16,"tag":206,"props":619,"children":620},{"class":208,"line":219},[621,626],{"type":16,"tag":206,"props":622,"children":623},{"style":223},[624],{"type":21,"value":625},"  \"hooks\"",{"type":16,"tag":206,"props":627,"children":628},{"style":213},[629],{"type":21,"value":231},{"type":16,"tag":206,"props":631,"children":632},{"class":208,"line":234},[633,638],{"type":16,"tag":206,"props":634,"children":635},{"style":223},[636],{"type":21,"value":637},"    \"Stop\"",{"type":16,"tag":206,"props":639,"children":640},{"style":213},[641],{"type":21,"value":245},{"type":16,"tag":206,"props":643,"children":644},{"class":208,"line":248},[645,650,655,660,665,669,674,678,682,686,691],{"type":16,"tag":206,"props":646,"children":647},{"style":213},[648],{"type":21,"value":649},"      { ",{"type":16,"tag":206,"props":651,"children":652},{"style":223},[653],{"type":21,"value":654},"\"hooks\"",{"type":16,"tag":206,"props":656,"children":657},{"style":213},[658],{"type":21,"value":659},": [{ ",{"type":16,"tag":206,"props":661,"children":662},{"style":223},[663],{"type":21,"value":664},"\"type\"",{"type":16,"tag":206,"props":666,"children":667},{"style":213},[668],{"type":21,"value":83},{"type":16,"tag":206,"props":670,"children":671},{"style":252},[672],{"type":21,"value":673},"\"command\"",{"type":16,"tag":206,"props":675,"children":676},{"style":213},[677],{"type":21,"value":179},{"type":16,"tag":206,"props":679,"children":680},{"style":223},[681],{"type":21,"value":673},{"type":16,"tag":206,"props":683,"children":684},{"style":213},[685],{"type":21,"value":83},{"type":16,"tag":206,"props":687,"children":688},{"style":252},[689],{"type":21,"value":690},"\"notify-send 'Claude Code' 'Run finished'\"",{"type":16,"tag":206,"props":692,"children":693},{"style":213},[694],{"type":21,"value":695}," }] }\n",{"type":16,"tag":206,"props":697,"children":698},{"class":208,"line":263},[699],{"type":16,"tag":206,"props":700,"children":701},{"style":213},[702],{"type":21,"value":378},{"type":16,"tag":206,"props":704,"children":705},{"class":208,"line":276},[706],{"type":16,"tag":206,"props":707,"children":708},{"style":213},[709],{"type":21,"value":387},{"type":16,"tag":206,"props":711,"children":712},{"class":208,"line":285},[713],{"type":16,"tag":206,"props":714,"children":715},{"style":213},[716],{"type":21,"value":396},{"type":16,"tag":17,"props":718,"children":719},{},[720,722,728],{"type":21,"value":721},"One gotcha: hooks are snapshotted when a session starts. Edit the file mid-session and the change will not apply until you restart Claude Code or review it from the ",{"type":16,"tag":32,"props":723,"children":725},{"className":724},[],[726],{"type":21,"value":727},"/hooks",{"type":21,"value":729}," menu.",{"type":16,"tag":57,"props":731,"children":733},{"id":732},"the-other-keys-worth-knowing",[734],{"type":21,"value":735},"The other keys worth knowing",{"type":16,"tag":17,"props":737,"children":738},{},[739],{"type":21,"value":740},"Beyond those two, a handful of keys earn their place in a real config:",{"type":16,"tag":742,"props":743,"children":744},"table",{},[745,764],{"type":16,"tag":746,"props":747,"children":748},"thead",{},[749],{"type":16,"tag":750,"props":751,"children":752},"tr",{},[753,759],{"type":16,"tag":754,"props":755,"children":756},"th",{},[757],{"type":21,"value":758},"Key",{"type":16,"tag":754,"props":760,"children":761},{},[762],{"type":21,"value":763},"Does",{"type":16,"tag":765,"props":766,"children":767},"tbody",{},[768,786,803,820,845,862],{"type":16,"tag":750,"props":769,"children":770},{},[771,781],{"type":16,"tag":772,"props":773,"children":774},"td",{},[775],{"type":16,"tag":32,"props":776,"children":778},{"className":777},[],[779],{"type":21,"value":780},"model",{"type":16,"tag":772,"props":782,"children":783},{},[784],{"type":21,"value":785},"Pins the model for this project or user.",{"type":16,"tag":750,"props":787,"children":788},{},[789,798],{"type":16,"tag":772,"props":790,"children":791},{},[792],{"type":16,"tag":32,"props":793,"children":795},{"className":794},[],[796],{"type":21,"value":797},"env",{"type":16,"tag":772,"props":799,"children":800},{},[801],{"type":21,"value":802},"Environment variables injected into every session.",{"type":16,"tag":750,"props":804,"children":805},{},[806,815],{"type":16,"tag":772,"props":807,"children":808},{},[809],{"type":16,"tag":32,"props":810,"children":812},{"className":811},[],[813],{"type":21,"value":814},"statusLine",{"type":16,"tag":772,"props":816,"children":817},{},[818],{"type":21,"value":819},"A command whose output becomes your status line.",{"type":16,"tag":750,"props":821,"children":822},{},[823,832],{"type":16,"tag":772,"props":824,"children":825},{},[826],{"type":16,"tag":32,"props":827,"children":829},{"className":828},[],[830],{"type":21,"value":831},"includeCoAuthoredBy",{"type":16,"tag":772,"props":833,"children":834},{},[835,837,843],{"type":21,"value":836},"Set to ",{"type":16,"tag":32,"props":838,"children":840},{"className":839},[],[841],{"type":21,"value":842},"false",{"type":21,"value":844}," to drop the co-author trailer from commits.",{"type":16,"tag":750,"props":846,"children":847},{},[848,857],{"type":16,"tag":772,"props":849,"children":850},{},[851],{"type":16,"tag":32,"props":852,"children":854},{"className":853},[],[855],{"type":21,"value":856},"cleanupPeriodDays",{"type":16,"tag":772,"props":858,"children":859},{},[860],{"type":21,"value":861},"How long transcripts are kept locally.",{"type":16,"tag":750,"props":863,"children":864},{},[865,874],{"type":16,"tag":772,"props":866,"children":867},{},[868],{"type":16,"tag":32,"props":869,"children":871},{"className":870},[],[872],{"type":21,"value":873},"apiKeyHelper",{"type":16,"tag":772,"props":875,"children":876},{},[877],{"type":21,"value":878},"A script that prints the credential to use.",{"type":16,"tag":57,"props":880,"children":882},{"id":881},"a-realistic-file",[883],{"type":21,"value":884},"A realistic file",{"type":16,"tag":17,"props":886,"children":887},{},[888,890,895],{"type":21,"value":889},"Putting it together, a project ",{"type":16,"tag":32,"props":891,"children":893},{"className":892},[],[894],{"type":21,"value":106},{"type":21,"value":896}," that a team can actually share:",{"type":16,"tag":196,"props":898,"children":900},{"className":198,"code":899,"language":200,"meta":7,"style":7},"{\n  \"permissions\": {\n    \"allow\": [\n      \"Bash(npm run lint)\",\n      \"Bash(npm run test:*)\",\n      \"Read(./**)\",\n      \"Edit(./src/**)\"\n    ],\n    \"deny\": [\n      \"Read(./.env*)\",\n      \"Bash(rm:*)\",\n      \"Bash(git push:*)\"\n    ]\n  },\n  \"hooks\": {\n    \"PostToolUse\": [\n      {\n        \"matcher\": \"Edit|Write\",\n        \"hooks\": [{ \"type\": \"command\", \"command\": \"npx prettier --write \\\"$CLAUDE_PROJECT_DIR\\\"\" }]\n      }\n    ],\n    \"Stop\": [\n      { \"hooks\": [{ \"type\": \"command\", \"command\": \"notify-send 'Claude Code' 'Run finished'\" }] }\n    ]\n  },\n  \"includeCoAuthoredBy\": false\n}\n",[901],{"type":16,"tag":32,"props":902,"children":903},{"__ignoreMap":7},[904,911,922,933,945,956,968,976,983,994,1006,1018,1025,1032,1040,1051,1063,1071,1093,1159,1168,1176,1188,1236,1244,1252,1270],{"type":16,"tag":206,"props":905,"children":906},{"class":208,"line":209},[907],{"type":16,"tag":206,"props":908,"children":909},{"style":213},[910],{"type":21,"value":216},{"type":16,"tag":206,"props":912,"children":913},{"class":208,"line":219},[914,918],{"type":16,"tag":206,"props":915,"children":916},{"style":223},[917],{"type":21,"value":226},{"type":16,"tag":206,"props":919,"children":920},{"style":213},[921],{"type":21,"value":231},{"type":16,"tag":206,"props":923,"children":924},{"class":208,"line":234},[925,929],{"type":16,"tag":206,"props":926,"children":927},{"style":223},[928],{"type":21,"value":240},{"type":16,"tag":206,"props":930,"children":931},{"style":213},[932],{"type":21,"value":245},{"type":16,"tag":206,"props":934,"children":935},{"class":208,"line":248},[936,941],{"type":16,"tag":206,"props":937,"children":938},{"style":252},[939],{"type":21,"value":940},"      \"Bash(npm run lint)\"",{"type":16,"tag":206,"props":942,"children":943},{"style":213},[944],{"type":21,"value":260},{"type":16,"tag":206,"props":946,"children":947},{"class":208,"line":263},[948,952],{"type":16,"tag":206,"props":949,"children":950},{"style":252},[951],{"type":21,"value":255},{"type":16,"tag":206,"props":953,"children":954},{"style":213},[955],{"type":21,"value":260},{"type":16,"tag":206,"props":957,"children":958},{"class":208,"line":276},[959,964],{"type":16,"tag":206,"props":960,"children":961},{"style":252},[962],{"type":21,"value":963},"      \"Read(./**)\"",{"type":16,"tag":206,"props":965,"children":966},{"style":213},[967],{"type":21,"value":260},{"type":16,"tag":206,"props":969,"children":970},{"class":208,"line":285},[971],{"type":16,"tag":206,"props":972,"children":973},{"style":252},[974],{"type":21,"value":975},"      \"Edit(./src/**)\"\n",{"type":16,"tag":206,"props":977,"children":978},{"class":208,"line":294},[979],{"type":16,"tag":206,"props":980,"children":981},{"style":213},[982],{"type":21,"value":291},{"type":16,"tag":206,"props":984,"children":985},{"class":208,"line":307},[986,990],{"type":16,"tag":206,"props":987,"children":988},{"style":223},[989],{"type":21,"value":330},{"type":16,"tag":206,"props":991,"children":992},{"style":213},[993],{"type":21,"value":245},{"type":16,"tag":206,"props":995,"children":996},{"class":208,"line":316},[997,1002],{"type":16,"tag":206,"props":998,"children":999},{"style":252},[1000],{"type":21,"value":1001},"      \"Read(./.env*)\"",{"type":16,"tag":206,"props":1003,"children":1004},{"style":213},[1005],{"type":21,"value":260},{"type":16,"tag":206,"props":1007,"children":1008},{"class":208,"line":324},[1009,1014],{"type":16,"tag":206,"props":1010,"children":1011},{"style":252},[1012],{"type":21,"value":1013},"      \"Bash(rm:*)\"",{"type":16,"tag":206,"props":1015,"children":1016},{"style":213},[1017],{"type":21,"value":260},{"type":16,"tag":206,"props":1019,"children":1020},{"class":208,"line":337},[1021],{"type":16,"tag":206,"props":1022,"children":1023},{"style":252},[1024],{"type":21,"value":313},{"type":16,"tag":206,"props":1026,"children":1027},{"class":208,"line":350},[1028],{"type":16,"tag":206,"props":1029,"children":1030},{"style":213},[1031],{"type":21,"value":378},{"type":16,"tag":206,"props":1033,"children":1034},{"class":208,"line":363},[1035],{"type":16,"tag":206,"props":1036,"children":1037},{"style":213},[1038],{"type":21,"value":1039},"  },\n",{"type":16,"tag":206,"props":1041,"children":1042},{"class":208,"line":372},[1043,1047],{"type":16,"tag":206,"props":1044,"children":1045},{"style":223},[1046],{"type":21,"value":625},{"type":16,"tag":206,"props":1048,"children":1049},{"style":213},[1050],{"type":21,"value":231},{"type":16,"tag":206,"props":1052,"children":1053},{"class":208,"line":381},[1054,1059],{"type":16,"tag":206,"props":1055,"children":1056},{"style":223},[1057],{"type":21,"value":1058},"    \"PostToolUse\"",{"type":16,"tag":206,"props":1060,"children":1061},{"style":213},[1062],{"type":21,"value":245},{"type":16,"tag":206,"props":1064,"children":1065},{"class":208,"line":390},[1066],{"type":16,"tag":206,"props":1067,"children":1068},{"style":213},[1069],{"type":21,"value":1070},"      {\n",{"type":16,"tag":206,"props":1072,"children":1074},{"class":208,"line":1073},18,[1075,1080,1084,1089],{"type":16,"tag":206,"props":1076,"children":1077},{"style":223},[1078],{"type":21,"value":1079},"        \"matcher\"",{"type":16,"tag":206,"props":1081,"children":1082},{"style":213},[1083],{"type":21,"value":83},{"type":16,"tag":206,"props":1085,"children":1086},{"style":252},[1087],{"type":21,"value":1088},"\"Edit|Write\"",{"type":16,"tag":206,"props":1090,"children":1091},{"style":213},[1092],{"type":21,"value":260},{"type":16,"tag":206,"props":1094,"children":1096},{"class":208,"line":1095},19,[1097,1102,1106,1110,1114,1118,1122,1126,1130,1135,1140,1145,1149,1154],{"type":16,"tag":206,"props":1098,"children":1099},{"style":223},[1100],{"type":21,"value":1101},"        \"hooks\"",{"type":16,"tag":206,"props":1103,"children":1104},{"style":213},[1105],{"type":21,"value":659},{"type":16,"tag":206,"props":1107,"children":1108},{"style":223},[1109],{"type":21,"value":664},{"type":16,"tag":206,"props":1111,"children":1112},{"style":213},[1113],{"type":21,"value":83},{"type":16,"tag":206,"props":1115,"children":1116},{"style":252},[1117],{"type":21,"value":673},{"type":16,"tag":206,"props":1119,"children":1120},{"style":213},[1121],{"type":21,"value":179},{"type":16,"tag":206,"props":1123,"children":1124},{"style":223},[1125],{"type":21,"value":673},{"type":16,"tag":206,"props":1127,"children":1128},{"style":213},[1129],{"type":21,"value":83},{"type":16,"tag":206,"props":1131,"children":1132},{"style":252},[1133],{"type":21,"value":1134},"\"npx prettier --write ",{"type":16,"tag":206,"props":1136,"children":1137},{"style":223},[1138],{"type":21,"value":1139},"\\\"",{"type":16,"tag":206,"props":1141,"children":1142},{"style":252},[1143],{"type":21,"value":1144},"$CLAUDE_PROJECT_DIR",{"type":16,"tag":206,"props":1146,"children":1147},{"style":223},[1148],{"type":21,"value":1139},{"type":16,"tag":206,"props":1150,"children":1151},{"style":252},[1152],{"type":21,"value":1153},"\"",{"type":16,"tag":206,"props":1155,"children":1156},{"style":213},[1157],{"type":21,"value":1158}," }]\n",{"type":16,"tag":206,"props":1160,"children":1162},{"class":208,"line":1161},20,[1163],{"type":16,"tag":206,"props":1164,"children":1165},{"style":213},[1166],{"type":21,"value":1167},"      }\n",{"type":16,"tag":206,"props":1169,"children":1171},{"class":208,"line":1170},21,[1172],{"type":16,"tag":206,"props":1173,"children":1174},{"style":213},[1175],{"type":21,"value":291},{"type":16,"tag":206,"props":1177,"children":1179},{"class":208,"line":1178},22,[1180,1184],{"type":16,"tag":206,"props":1181,"children":1182},{"style":223},[1183],{"type":21,"value":637},{"type":16,"tag":206,"props":1185,"children":1186},{"style":213},[1187],{"type":21,"value":245},{"type":16,"tag":206,"props":1189,"children":1191},{"class":208,"line":1190},23,[1192,1196,1200,1204,1208,1212,1216,1220,1224,1228,1232],{"type":16,"tag":206,"props":1193,"children":1194},{"style":213},[1195],{"type":21,"value":649},{"type":16,"tag":206,"props":1197,"children":1198},{"style":223},[1199],{"type":21,"value":654},{"type":16,"tag":206,"props":1201,"children":1202},{"style":213},[1203],{"type":21,"value":659},{"type":16,"tag":206,"props":1205,"children":1206},{"style":223},[1207],{"type":21,"value":664},{"type":16,"tag":206,"props":1209,"children":1210},{"style":213},[1211],{"type":21,"value":83},{"type":16,"tag":206,"props":1213,"children":1214},{"style":252},[1215],{"type":21,"value":673},{"type":16,"tag":206,"props":1217,"children":1218},{"style":213},[1219],{"type":21,"value":179},{"type":16,"tag":206,"props":1221,"children":1222},{"style":223},[1223],{"type":21,"value":673},{"type":16,"tag":206,"props":1225,"children":1226},{"style":213},[1227],{"type":21,"value":83},{"type":16,"tag":206,"props":1229,"children":1230},{"style":252},[1231],{"type":21,"value":690},{"type":16,"tag":206,"props":1233,"children":1234},{"style":213},[1235],{"type":21,"value":695},{"type":16,"tag":206,"props":1237,"children":1239},{"class":208,"line":1238},24,[1240],{"type":16,"tag":206,"props":1241,"children":1242},{"style":213},[1243],{"type":21,"value":378},{"type":16,"tag":206,"props":1245,"children":1247},{"class":208,"line":1246},25,[1248],{"type":16,"tag":206,"props":1249,"children":1250},{"style":213},[1251],{"type":21,"value":1039},{"type":16,"tag":206,"props":1253,"children":1255},{"class":208,"line":1254},26,[1256,1261,1265],{"type":16,"tag":206,"props":1257,"children":1258},{"style":223},[1259],{"type":21,"value":1260},"  \"includeCoAuthoredBy\"",{"type":16,"tag":206,"props":1262,"children":1263},{"style":213},[1264],{"type":21,"value":83},{"type":16,"tag":206,"props":1266,"children":1267},{"style":223},[1268],{"type":21,"value":1269},"false\n",{"type":16,"tag":206,"props":1271,"children":1273},{"class":208,"line":1272},27,[1274],{"type":16,"tag":206,"props":1275,"children":1276},{"style":213},[1277],{"type":21,"value":396},{"type":16,"tag":17,"props":1279,"children":1280},{},[1281,1283,1289],{"type":21,"value":1282},"Everyone on the team gets the same guardrails and the same auto-formatting, and each developer can still layer a personal ",{"type":16,"tag":32,"props":1284,"children":1286},{"className":1285},[],[1287],{"type":21,"value":1288},"settings.local.json",{"type":21,"value":1290}," on top for their own notifications.",{"type":16,"tag":57,"props":1292,"children":1294},{"id":1293},"editing-it-without-the-json",[1295],{"type":21,"value":1296},"Editing it without the JSON",{"type":16,"tag":17,"props":1298,"children":1299},{},[1300,1302,1308,1310,1315,1317,1323],{"type":21,"value":1301},"You do not have to hand-write any of this. Inside a session, ",{"type":16,"tag":32,"props":1303,"children":1305},{"className":1304},[],[1306],{"type":21,"value":1307},"/permissions",{"type":21,"value":1309}," opens the allow and deny lists, ",{"type":16,"tag":32,"props":1311,"children":1313},{"className":1312},[],[1314],{"type":21,"value":727},{"type":21,"value":1316}," walks you through adding a hook, and ",{"type":16,"tag":32,"props":1318,"children":1320},{"className":1319},[],[1321],{"type":21,"value":1322},"/config",{"type":21,"value":1324}," covers the rest. They write the same files, so you can start in the menus and tidy the JSON later.",{"type":16,"tag":57,"props":1326,"children":1328},{"id":1327},"keep-it-readable-and-reviewed",[1329],{"type":21,"value":1330},"Keep it readable and reviewed",{"type":16,"tag":17,"props":1332,"children":1333},{},[1334,1336,1341,1343,1348,1350,1355],{"type":21,"value":1335},"A ",{"type":16,"tag":32,"props":1337,"children":1339},{"className":1338},[],[1340],{"type":21,"value":37},{"type":21,"value":1342}," grants real power: permissions decide what runs unattended, and hooks run commands automatically. Treat the project file like code: review changes in pull requests, keep secrets in ",{"type":16,"tag":32,"props":1344,"children":1346},{"className":1345},[],[1347],{"type":21,"value":192},{"type":21,"value":1349},", and never paste a settings file you have not read. A malicious ",{"type":16,"tag":32,"props":1351,"children":1353},{"className":1352},[],[1354],{"type":21,"value":177},{"type":21,"value":1356}," rule or hook command is indistinguishable from a helpful one until it runs.",{"type":16,"tag":57,"props":1358,"children":1360},{"id":1359},"let-the-awareness-part-configure-itself",[1361],{"type":21,"value":1362},"Let the awareness part configure itself",{"type":16,"tag":17,"props":1364,"children":1365},{},[1366,1368,1373,1375,1380,1382,1388,1390,1395],{"type":21,"value":1367},"Getting the ",{"type":16,"tag":32,"props":1369,"children":1371},{"className":1370},[],[1372],{"type":21,"value":53},{"type":21,"value":1374}," block right so you can ",{"type":16,"tag":24,"props":1376,"children":1377},{},[1378],{"type":21,"value":1379},"see",{"type":21,"value":1381}," your sessions is fiddly to maintain by hand, especially once several people share the project file. ",{"type":16,"tag":588,"props":1383,"children":1385},{"href":1384},"/",[1386],{"type":21,"value":1387},"Blooby",{"type":21,"value":1389}," handles exactly that slice: it merges its own hooks into your ",{"type":16,"tag":32,"props":1391,"children":1393},{"className":1392},[],[1394],{"type":21,"value":37},{"type":21,"value":1396}," for you (without touching your permissions or overwriting anything) and turns them into a live mascot per Claude Code session. You keep full control of the file; Blooby just adds the part that watches.",{"type":16,"tag":1398,"props":1399,"children":1400},"style",{},[1401],{"type":21,"value":1402},"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);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":7,"searchDepth":219,"depth":219,"links":1404},[1405,1406,1408,1410,1411,1412,1413,1414],{"id":59,"depth":219,"text":62},{"id":151,"depth":219,"text":1407},"permissions: what the agent may do on its own",{"id":567,"depth":219,"text":1409},"hooks: run a command on each event",{"id":732,"depth":219,"text":735},{"id":881,"depth":219,"text":884},{"id":1293,"depth":219,"text":1296},{"id":1327,"depth":219,"text":1330},{"id":1359,"depth":219,"text":1362},"markdown","content:guides:claude-code-settings-json.md","content","guides/claude-code-settings-json.md","guides/claude-code-settings-json","md",1]