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
change mkrqukvolyrywsroxkzmpvwssqkvsvxq
commit 53f70b912961de0e1fef520008cf4d3e8870e4be
author Alpha Chen <alpha@kejadlen.dev>
date
parent 0e55315c
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");
     }
 }