diff options
| author | Joe Mou <dev@mou.fo> | 2026-04-13 21:46:00 -0400 |
|---|---|---|
| committer | Joe Mou <dev@mou.fo> | 2026-04-15 00:02:13 -0400 |
| commit | 0350d4c87cb68bf50ed0d6a1290fc497ad8fd7b1 (patch) | |
| tree | daded5c90024216972f09c109391b7f6b1e4244e /hostnix/mojo/packages/claude-code | |
| parent | 1c9249426a274884f8104e26ca63e4b3b3578687 (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/claude-code')
| -rw-r--r-- | hostnix/mojo/packages/claude-code/claude.sb | 5 | ||||
| -rw-r--r-- | hostnix/mojo/packages/claude-code/default.nix | 11 |
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 "$@" '' |
