# feat\(settings\): add per-project overrides for scopable server settings · pingdotgg/t3code

[View on GitCafe](https://git.cafe/pingdotgg/t3code/commit/c60b071c65d1b3359795f951e8a96facfb475546)

Repository: [pingdotgg/t3code](https://git.cafe/pingdotgg/t3code)

Visibility: public

Requested revision: c60b071c65d1b3359795f951e8a96facfb475546

Requested commit: c60b071c65d1b3359795f951e8a96facfb475546

Commit: c60b071c65d1b3359795f951e8a96facfb475546

Tree: 700afd969680559ddfb7200f119b643a542e0e68

Author: Julius Marminge

Committer: Julius Marminge

## Message

```
feat(settings): add per-project overrides for scopable server settings

Project overrides were scattered across the Project aggregate, three ad hoc
Record<ProjectId, ...> fields in ServerSettings, and a client-settings record.
Every other server setting was environment-only, so a settings hierarchy could
not be built on top of them.

Introduce projectSettingsOverrides: one record per project holding a partial
of PROJECT_SCOPED_SERVER_SETTING_KEYS, and resolveProjectSettings() which
returns the effective settings plus the source of each key. Legacy fields are
folded into the record once on load and kept populated as derived views for
one release. Server consumers that act on a thread or checkout (agent access
gates, auto-settlement, title/branch generation, restart continuation, legacy
token streaming, auto-pull, setup scripts, cwd bootstrap) now read through the
resolver so an override takes effect everywhere the environment value did.

Model: Claude Fable 5.1. Harness: Claude Code.

```

## Parents

- [05d404210058d714cfef902517fc20ad66b82339](https://git.cafe/pingdotgg/t3code/commit/05d404210058d714cfef902517fc20ad66b82339?format=markdown)

[Source at this commit](https://git.cafe/pingdotgg/t3code/tree/c60b071c65d1b3359795f951e8a96facfb475546?format=markdown)
