summaryrefslogtreecommitdiff
path: root/hostnix/mojo/packages
diff options
context:
space:
mode:
authorJoe Mou <dev@mou.fo>2026-04-13 21:46:00 -0400
committerJoe Mou <dev@mou.fo>2026-04-15 00:02:13 -0400
commit0350d4c87cb68bf50ed0d6a1290fc497ad8fd7b1 (patch)
treedaded5c90024216972f09c109391b7f6b1e4244e /hostnix/mojo/packages
parent1c9249426a274884f8104e26ca63e4b3b3578687 (diff)
mojo: Refine Claude Code directory access
Give access to .dotfiles, fix ~/src subdirectories, and check that we don't allow access to everything.
Diffstat (limited to 'hostnix/mojo/packages')
-rw-r--r--hostnix/mojo/packages/claude-code/claude.sb5
-rw-r--r--hostnix/mojo/packages/claude-code/default.nix11
2 files changed, 12 insertions, 4 deletions
diff --git a/hostnix/mojo/packages/claude-code/claude.sb b/hostnix/mojo/packages/claude-code/claude.sb
index 72797de..1117b18 100644
--- a/hostnix/mojo/packages/claude-code/claude.sb
+++ b/hostnix/mojo/packages/claude-code/claude.sb
@@ -293,4 +293,7 @@
;; themselves. Otherwise it will set PATH to "" and disable colored output
(allow file-read* (literal "/Users"))
(allow file-read* (literal "/Users/joe"))
-(allow file-read* (literal "/Users/joe/src"))
+(allow file-read* (subpath "/Users/joe/src"))
+
+(allow file-read* (subpath (string-append (param "HOME_DIR") "/.dotfiles")))
+(deny file-read* (subpath (string-append (param "HOME_DIR") "/.dotfiles/tmp")))
diff --git a/hostnix/mojo/packages/claude-code/default.nix b/hostnix/mojo/packages/claude-code/default.nix
index d8e333a..a9798fd 100644
--- a/hostnix/mojo/packages/claude-code/default.nix
+++ b/hostnix/mojo/packages/claude-code/default.nix
@@ -1,11 +1,16 @@
{ writeShellScriptBin, claude-code }:
writeShellScriptBin "claude" ''
+ if [[ $HOME/ = ''${PWD%/}/* ]]; then
+ echo "fatal: refusing to allow access to $PWD" >&2
+ exit 1
+ fi
+
exec /usr/bin/sandbox-exec -f ${./claude.sb} \
- -D TARGET_DIR=$HOME/src \
+ -D TARGET_DIR="$(realpath "$PWD")" \
-D TMP_DIR=/tmp \
- -D HOME_DIR=$HOME \
- -D CACHE_DIR=$HOME/.cache \
+ -D HOME_DIR="$HOME" \
+ -D CACHE_DIR="$HOME/.cache" \
${claude-code}/bin/claude \
--allow-dangerously-skip-permissions "$@"
''