Files, git and commands

Everything that touches the host's disk or runs a program, and why each one has its own switch.

All off or restricted by default, and each is a separate decision. The ordering here is deliberate: every switch below grants strictly more than the one above it.

The host filesystem

Default
HOST_FS_DISABLED false Turns off every host-filesystem feature: domain export and import, datasource paths, git datasources. This is what a hosted, multi-tenant deployment sets — there, the person pressing the button does not own the disk.
HOST_FS_ROOTS — Optional colon-separated allowlist of absolute directories. Empty means no allowlist, because the directory is already named per datasource and making people configure the same thing twice bought nothing. Re-resolved with realpath on every access, so a symlink swapped in later is caught.

Git

Default
GIT_ENABLED false Every git feature: the domain export's commit controls and git datasources. Off means absent, not disabled-with-a-tooltip. Git runs with argv, never a shell, and with GIT_TERMINAL_PROMPT=0 so a missing credential errors instead of hanging.
GIT_REPOS_DIR <data dir>/repos One directory per datasource. DataGripe deletes a directory only when it created it.
GIT_TIMEOUT_MS 60000 Every git invocation is killed at this.
GIT_CLONE_TIMEOUT_MS 600000 Clone gets its own budget: a big repository is not a hung one.

Repository commands

Default
REPO_COMMANDS_ENABLED false Lets a repository's .datagripe/run.yaml declare commands DataGripe can run.
REPO_COMMAND_DEFAULT_TIMEOUT_MS 120000 Used when a command declares no timeoutSeconds of its own.
REPO_COMMAND_TIMEOUT_MS 600000 The hard ceiling per run, whatever the command asked for.

REPO_COMMANDS_ENABLED has its own switch on purpose. Every other git feature reads and writes files; this one executes a program somebody else wrote, arriving over the network on git pull. A deployment that wants git datasources does not thereby want arbitrary execution, and the two decisions should not share a checkbox.

Even on, nothing runs until a person approves the command list, and any change to that list needs a fresh approval. The approval is the security boundary; there is no sandbox.

This page as Markdown, for an agent or a diff.