feat(system): fix(setup): protect ~/.secrets/ with permissions.deny + fix chmod on inner dir — closes #496

Co-Authored-By: @devpulse <devpulse@aipass>
This commit is contained in:
patrick
2026-05-03 09:29:14 -07:00
co-authored by @devpulse
parent c7bc27b7b8
commit 1d02f412f6
+19
View File
@@ -253,6 +253,7 @@ if [ ! -d "$SECRETS_DIR" ]; then
echo "Creating secrets directory at $SECRETS_DIR ..."
mkdir -p "$SECRETS_DIR"
chmod 700 "$HOME/.secrets"
chmod 700 "$SECRETS_DIR"
echo " ~/.secrets/aipass/ ... created"
else
echo "Secrets directory already exists — skipping"
@@ -570,6 +571,24 @@ if "MSYS" in msys or "msys" in msys or "MINGW" in msys:
env_block["PYTHONUTF8"] = "1"
settings["env"] = env_block
# Deny rules — hard-block tool access to secrets
permissions = settings.get("permissions", {})
deny = permissions.get("deny", [])
secrets_deny = [
"Read(~/.secrets/**)",
"Read(/home/*/.secrets/**)",
"Bash(cat *~/.secrets*)",
"Bash(less *~/.secrets*)",
"Bash(head *~/.secrets*)",
"Bash(tail *~/.secrets*)",
"Bash(*~/.secrets*)",
]
for rule in secrets_deny:
if rule not in deny:
deny.append(rule)
permissions["deny"] = deny
settings["permissions"] = permissions
settings_path.write_text(json.dumps(settings, indent=2) + "\n")
print(f" hooks -> {settings_path}")
print(f" AIPASS_HOME -> {repo_root} (in settings.json env)")