Storage & security

Where state lives, bind defaults, path safety, and pruning.

Paths

LocationPurpose
~/.diffing/<repo-name>-<8-char-hash>/Per-repository server state
~/.config/diffing/settings.jsonUser preferences (theme, mode, editor, …)
~/.diffing/backups/MCP config backups from setup merge

Repo hash is sha256(absolute-repo-root).slice(0, 8).

Typical per-repo contents:

server.json
sessions/
comments.json
plans.json
plan-sources/
attachments/
fff/                 # search frecency + history DBs

Inactive projects may be auto-pruned after prolonged inactivity (see product settings/docs for current window).

Network defaults

  • Host: 127.0.0.1
  • Port: OS-selected free port, or --port <n>
  • LAN: only with --host 0.0.0.0 (or ::) and --insecure-no-auth

Path safety

  • .. and null bytes rejected
  • Paths URL-decoded and constrained to the repository root
  • Escape attempts return 403
  • Attachments isolated under the per-repo attachments/ directory

Privacy

  • No account, no telemetry, no required cloud
  • GitHub features only run when you open a PR session / authorize publish
  • Agent plans and scratch should live under ~/.diffing/…/plan-sources/, not in the consumer working tree