From 0350d4c87cb68bf50ed0d6a1290fc497ad8fd7b1 Mon Sep 17 00:00:00 2001 From: Joe Mou Date: Mon, 13 Apr 2026 21:46:00 -0400 Subject: mojo: Refine Claude Code directory access Give access to .dotfiles, fix ~/src subdirectories, and check that we don't allow access to everything. --- hostnix/mojo/packages/claude-code/claude.sb | 5 ++++- hostnix/mojo/packages/claude-code/default.nix | 11 ++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) (limited to 'hostnix') 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 "$@" '' -- cgit v1.3.1