config: allowlist ~/.claude/hooks for Claude
settings.json is already allowlisted and can reference hook scripts
under ~/.claude/hooks; mounting the config that wires up hooks without
the scripts themselves leaves them dangling in the container. hooks is
also a peer of the skills/agents/commands directories already carried.
skip-if-missing keeps it free for users without a hooks dir.
Assisted-by: Claude Opus 4.8 via Claude Code
diff --git a/src/config.rs b/src/config.rs
index 5b802a3..309d9e5 100644
--- a/src/config.rs
+++ b/src/config.rs
@@ -69,7 +69,14 @@ impl Agent {
pub fn config_allowlist(&self) -> &'static [&'static str] {
match self {
Self::Pi => &["AGENTS.md", "skills"],
- Self::Claude => &["CLAUDE.md", "settings.json", "skills", "agents", "commands"],
+ Self::Claude => &[
+ "CLAUDE.md",
+ "settings.json",
+ "skills",
+ "agents",
+ "commands",
+ "hooks",
+ ],
}
}
@@ -1328,6 +1335,7 @@ mod tests {
fn agent_allowlists() {
assert!(Agent::Pi.config_allowlist().contains(&"AGENTS.md"));
assert!(Agent::Claude.config_allowlist().contains(&"CLAUDE.md"));
+ assert!(Agent::Claude.config_allowlist().contains(&"hooks"));
assert_eq!(Agent::Claude.container_config_dir(), "/root/.claude");
}
}