About daemon-config.json
Use daemon-config.json to configure a self-hosted Cosmos daemon without repeating command-line flags. Auggie loads it automatically when you run auggie daemon; restart the daemon after changing it.
daemon-config.json requires Auggie 1.x. If you currently run Auggie 0.x, follow Migrate from Auggie 0.x.Quickstart
Create.augment/daemon-config.json in your workspace with only the settings you want to change. This configuration gives the daemon a recognizable name and limits it to 125 concurrent sessions:
daemon-config.json uses strict JSON, so inline comments and trailing commas are not supported. Keep explanations outside the JSON document, as shown above.Example
The following example configures a pooled team daemon with repository discovery, one additional repository, isolated-worktree behavior, and file logging. Replace the pool ID and paths before using it, or omit settings that do not apply to your environment.allowIndexing: trueenables indexing for eligible configured workspaces. Review the indexing permission behavior before enabling it.gitCredentialMode: "none"disables daemon-provided Git credentials. Review Git credential mode before selecting another mode.- Set
noWorktreePulltotrueto base new worktrees on localHEADinstead of the latest fetched upstream commit. - Omit
poolIdif the daemon should not join a pool. UsespaceIdinstead to assign a standalone daemon to a Space. vmIdandnewVmIdare intentionally omitted so Auggie can reuse the persisted daemon identity.
Generate Configuration from Flags
Auggie can convert explicitly supplied daemon flags intodaemon-config.json fields. These actions run offline and exit without starting the daemon.
Preview Generated JSON
Use--config-print to print strict JSON to standard output:
--new-vm-id action is omitted with a warning because persisting it would request a new identity on every launch.
Write a Configuration File
Use--config-write=scope to write the generated configuration directly:
For example:
--config-write=project or --config-write=local equals-sign syntax. An explicit --workspace selects the destination workspace; otherwise Auggie uses the current Git root or current directory.
Configuration File Locations
Daemon configuration follows the same file hierarchy described in Hierarchical Settings File, using daemon-specific filenames. The scope locations are the same, but merge behavior differs: use the precedence and replacement rules documented on this page fordaemon-config.json.
Auggie checks four configuration scopes on every daemon start:
Configuration files are optional. Project and local files are resolved from an explicit
--workspace path, otherwise from the current Git root or current directory. A workspace value inside the file changes the daemon’s primary workspace but does not relocate config discovery.
Precedence and daemon-specific merging
daemon-config.json uses the same file-scope order as settings.json: managed, local project, project, then global. The key precedence difference is that explicit daemon CLI flags sit above every file and can override managed daemon configuration, while managed settings.json values are locked and cannot be overridden by users.
The formats also merge differently:
Keep these daemon-specific rules in mind:
- Missing keys inherit from lower-precedence scopes. Set a key to
nullto mask a lower value. - Arrays and objects are replaced, not combined or deep-merged. For example, a local
addWorkspacesarray replaces the project array. worktreeDirfalls back to its value insettings.jsonwhen it is absent from CLI flags and every daemon config scope.allowIndexingis enable-only at the command line. Effective configtrueor--allow-indexingenables it; there is no CLI disable flag.vmIdcannot be combined withnewVmId, andpoolIdcannot be combined withspaceId. When changing a configuration-only value, set the old key tonullin the higher scope.- For persisted pool or Space membership,
nullonly masks a lower config value. UsepoolId: ""orspaceId: ""to actively clear existing membership.
Path resolution
workspace, addWorkspaces, worktreeDir, and logFile accept absolute paths or ~-prefixed home paths. Other relative paths resolve from the directory containing the config file—not the workspace root. For example, ../../repo-b in /srv/repo-a/.augment/daemon-config.json resolves to /srv/repo-b.
Configuration reference
Every key is optional. Any supported key may be set tonull to mask a lower-precedence value.
Repository discovery
See Workspaces and isolation for layouts and behavior. Indaemon-config.json, set discoverWorkspaces.enabled to true or false; when enabled, optional depth must be from 1 through 5 and defaults to 1.
Discovery is refused at the user’s home directory or a filesystem root. The daemon advertises up to 64 additional workspaces; overflow entries are dropped with a warning.
Workspace isolation
See Workspace isolation for requirements and behavior.worktreeDir controls where isolated worktrees are stored. By default, new worktrees use the latest fetched commit from the tracked upstream; set noWorktreePull to true to use local HEAD instead. Existing worktrees are not changed.
Git Credential Mode
gitCredentialMode controls whether the daemon provides Git credentials to child-agent Git operations:
nonedisables daemon-provided Git credentials.user-oauthuses the daemon user’s GitHub OAuth access and is supported on macOS and Linux.github-appuses GitHub App access available to the daemon.
--git-credential-mode flag overrides configured values for that launch.
Indexing and Indexing Permissions
SetallowIndexing to enable indexing for configured workspaces that do not already have an explicit indexing permission:
- Paths covered by
indexingDenyDirsinsettings.json, stored deny decisions, and the home-directory hard block remain disabled.allowIndexingdoes not override them. - Paths covered by
indexingAllowDirsor a stored allow decision can be indexed withoutallowIndexing. - Eligible paths without an allow or deny rule are indexed only when effective config
allowIndexingistrueor the daemon starts with--allow-indexing. - Git worktrees inherit the indexing permission of their main repository.
- When the daemon starts interactively without
allowIndexing, it may prompt to save allow decisions for unruled workspaces. Non-interactive startup does not prompt, so those workspaces remain disabled.
indexingAllowDirs and indexingDenyDirs belong in settings.json, not daemon-config.json. Their hierarchy and merge behavior are described in Hierarchical Settings File.
Stored decisions are written to ~/.augment/indexing-permissions.json by default. To revoke a stored allow, remove the relevant entry, ensure the path is not enabled by allowIndexing or indexingAllowDirs, and restart the daemon.
There is no --no-allow-indexing flag. To disable a configured value, change the file that enables it or mask a lower-scope value with null in a higher-precedence file.
Local overrides
Keep shared defaults in.augment/daemon-config.json. Add .augment/daemon-config.local.json to .gitignore and use it for personal overrides:
Override configuration for one launch
Explicit flags override file values. For example,auggie daemon --max-agents 125 --log-level debug. An explicit --pool-id or --space-id also clears the configured alternative for that launch. Run auggie daemon --help for the full reference.
Validation
Auggie validates config at startup. Malformed JSON, invalid known values, forbidden global or managedvmId, and conflicting option pairs stop startup; unknown keys produce warnings and are ignored. A global or managed workspace is accepted with a warning because it affects every daemon on the machine.