▶ Concept walkthrough: five people, one folder

Module 09 opening video · ~4 minutes · what breaks when a team shares one .claude, the settings stack that contains it, and the line between an agent that is code and one that is a system

One repo, five people, and the stack above it

client-project/
CLAUDE.md (three people have edited it)
.claude/
settings.json · shared, travels through git
settings.local.json · yours, git ignores it
agents/
.mcp.json · the team's MCP servers
config/secrets/ · staging.env lives here
Part 1 · what breaks
Bash(git push *) allowed in the shared file
Monday: force push over a colleague's branch
staging.env read; credential in the transcript
pulled: a teammate's hook and two MCP servers
Part 2 · the governance stack, top wins
1 · managed settingsthe organization; a system path, MDM, or the admin console
2 · command lineclaude --settings, this session
3 · project local.claude/settings.local.json, you in this repo
4 · shared project.claude/settings.json, everyone in the repo
5 · user~/.claude/settings.json, you everywhere
/Library/Application Support/ClaudeCode/managed-settings.json
/status: Enterprise managed settings (file) ✓
staging.env read refused by rule ✓
Part 3 · the line, and the trail
agents/release-notes.md · reads, drafts: configuration
agents/ticket-triage.md · nightly, posts out: a system
managed settings env block: telemetry to your collector
rollout: baseline, pilot, champions, fleet
.claude/ · what five people share
client-project/.claude/
  settings.json         shared: allows, denies,
                        hooks, checked into git
  settings.local.json   one person's: git ignores it
  agents/               subagent definitions
client-project/.mcp.json   the team's MCP servers
client-project/CLAUDE.md   instructions, edited by
                           three people this month

With one person this folder is a workspace.
With five it is a policy everyone inherits.
.claude/settings.json · Friday, 5:40pm
{
  "permissions": {
    "allow": [
      "Bash(npm test *)",
      "Bash(git push *)"      <- new
    ]
  }
}

commit message: "settings"

The file is shared on purpose. Whoever pulls
it on Monday gets both rules.
Monday, a second consultant · "clean up the branch and push"
> clean up the branch and push

Squashing 4 commits...
Running: git push --force origin feature/intake

Pushed.

No prompt. The shared rule allowed any command
starting with "git push", and --force was part
of one. A colleague's unmerged branch is gone.
Discovered Tuesday.
a third consultant · "figure out why the staging connection fails"
> figure out why the staging connection fails

Reading config/app.js
Reading config/secrets/staging.env
  DB_HOST=stg-db.internal  DB_PASS=Qm7...

The host is right; the password expired on
the 12th.

CLAUDE.md said "never read the secrets
folder." That sentence is advice to the
model. It weighed the sentence against a
direct request and chose the request. The
credential is now in the transcript.
the trust prompt · after pulling a teammate's commit
Do you trust the files in this folder?
  client-project/

This project's settings define:
  1 hook   PreToolUse  scripts/log-tool.sh
  2 MCP servers   tracker, docs-search

Hooks run scripts on your machine. MCP
servers are programs Claude can call.
You pulled them with the commit.

  [ Yes, proceed ]   [ No, exit ]
settings precedence · five levels, top wins
RankLevelWho owns it
1managed settingsthe organization
2command lineyou, this session
3project localyou, this repo
4shared projecteveryone in the repo
5useryou, everywhere

A key set higher wins. Allow and deny lists merge across levels, so a developer can add to the organization's lists and cannot remove from them.

/Library/Application Support/ClaudeCode/managed-settings.json
{
  "permissions": {
    "deny": [
      "Read(./.env)",
      "Read(./secrets/**)"
    ],
    "disableBypassPermissionsMode": "disable"
  },
  "allowManagedPermissionRulesOnly": true
}

Same shape as settings.json. Different path:
one that needs administrator rights to write.
That is the enforcement.
the session · /status
> /status

Setting sources:
  Enterprise managed settings (file)
  Project settings (.claude/settings.json)
  User settings (~/.claude/settings.json)

Permission mode: default (Manual)
Bypass permissions mode: disabled by policy

One line per laptop. A machine that does not
show the first line has the file at the
wrong path, and the policy is not in force
there.
the same request · after the policy
> figure out why the staging connection fails

Reading config/app.js
Read config/secrets/staging.env
  Blocked by permission rule:
  Read(./secrets/**)  (managed settings)

I can't read the secrets folder. The app
reads DB_HOST and DB_PASS from it. Tell me
which variable to check and I'll trace
where it is consumed.

The sentence in CLAUDE.md still explains
why. The rule is what stopped the read.
two agent files · the four questions
Questionrelease-notes.mdticket-triage.md
Standing permissions beyond reading?noyes, posts comments
Runs without a person starting it?noyes, nightly
External effects?no, a draft for reviewyes, the client's tracker
Trail needed afterward?noyes, it sets priority
configuration: code reviewa system: owner, log, inventory
the collector · one prompt.id, every event
prompt.id 7f3a…  user.id a91c…  session.id 44e0…

12:04:11  user_prompt      length 62
12:04:12  api_request      sonnet  in 8.1k out 410
12:04:13  tool_decision    Read    accept (rule)
12:04:13  tool_result      Read    ok  38ms
12:04:14  tool_decision    Read    reject (deny rule)
12:04:15  api_request      sonnet  in 8.9k out 190
12:04:16  assistant_response   length 212

Prompt text redacted by default. The trail
shows a read was refused at 12:04:14 and
why, without copying the file into the log.
rollout · four phases, in order
PhaseShips
1 · baselinemanaged settings: secret denies, bypass lock, sandbox, telemetry endpoint
2 · pilotone team, one repo, shared settings reviewed like code
3 · championsthe pilot's two most fluent people write the guide, hold office hours
4 · fleeteveryone, baseline unchanged
ongoingweekly tool_decision review, a named owner per registered agent

Deloitte, April 2026: 21 percent of organizations have a mature governance model for agents. 74 percent expect at least moderate use by 2027.

Module 09 · Opening walkthrough
Five people, one folder
One shared .claude, three things that break in a week, and the stack that contains them: five settings levels, a managed policy on top, and a line between agents that are code and agents that are systems. Three parts:
1 · What breaks 2 · The governance stack 3 · The line, and the trail
Two files, one stack, four questions
The shared file is policy and gets reviewed like code. Managed settings outrank everything and are verified with one command. Four questions decide whether an agent is configuration or a system. The chapter takes each on its own.

Back to the chapter →

Part 1 · What breaks Part 2 · The governance stack Part 3 · The line, and the trail