Seshat AIDocumentation

Documentation / Reference

Configuration file

Where the terminal interface reads its JSON settings, which projects may set which sections, and every key of seshat.json.

The terminal interface and the seshat command read their settings from JSON files named seshat.json. This page lists the files, the order in which they apply, and every key. For the usual ways to set a provider and a model without editing a file, see Configuration. A Go program that embeds the runtime does not use these files: it uses ClientConfig.

Where the files are

FileScope
seshat.json in the runtime folderGlobal: your own settings, for every project. The runtime folder is described in Configuration. SESHAT_GLOBAL_CONFIG points to another folder
seshat.json or .seshat.json in the projectProject: found from the working directory up to the root of the git repository. A file above the repository is never read
.seshat/seshat.json in the projectWorkspace: the file that Seshat itself writes when you change a setting for one project

The files are merged. When the same key is set twice, the file closest to the project wins over the global one.

Projects you do not trust

A repository you just cloned can carry any of these files. Some sections start programs or decide where your keys go, so the terminal interface ignores them until you trust the project with seshat trust:

  • mcp and mcpServers
  • lsp
  • hooks
  • permissions
  • providers
  • image_generation, text_to_speech and speech_to_text
  • options.context_paths and options.skills_paths

The other sections still apply: models, the display options and the tools you disable. Your own global file is never restricted. Trust is recorded for the exact content of each file, so a change brings the question back. See Security and trust.

An example

{
  "models": {
    "large": { "provider": "anthropic", "model": "claude-sonnet-4-20250514" }
  },
  "options": {
    "tui": { "compact_mode": true },
    "disabled_tools": ["monitor"]
  },
  "permissions": {
    "allowed_tools": ["glob", "grep"]
  },
  "mcp": {
    "github": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"]
    }
  },
  "hooks": {
    "pre_tool_use": [
      { "matcher": "bash", "command": "./scripts/check-command.sh", "timeout": 10 }
    ]
  }
}

The mcp and permissions sections of a project file would be ignored until the project is trusted.

Keys

models

One entry per model type, large and small. Each entry has these keys.

KeyTypeDefaultMeaning
modelstring, requiredThe model ID as used by the provider API
providerstring, requiredThe model provider ID that matches a key in the providers config
reasoning_effortstringReasoning effort level for OpenAI models that support it. One of low, medium, high.
thinkbooleanEnable thinking mode for Anthropic models that support reasoning
max_tokensnumberMaximum number of tokens for model responses
temperaturenumberSampling temperature
top_pnumberTop-p (nucleus) sampling parameter
top_knumberTop-k sampling parameter
frequency_penaltynumberFrequency penalty to reduce repetition
presence_penaltynumberPresence penalty to increase topic diversity
provider_optionsobjectAdditional provider-specific options for the model

providers

One entry per provider, named by its id. Each entry has these keys.

KeyTypeDefaultMeaning
idstringUnique identifier for the provider
namestringHuman-readable name for the provider
base_urlstringBase URL for the provider’s API
typestringopenaiProvider type that determines the API format. One of openai, openai-compat, anthropic, gemini, azure, vertexai.
api_keystringAPI key for authentication with the provider
oauthobjectOAuth2 token for authentication with the provider
disablebooleanfalseWhether this provider is disabled
system_prompt_prefixstringCustom prefix to add to system prompts for this provider
extra_headersobjectAdditional HTTP headers to send with requests
extra_bodyobjectAdditional fields to include in request bodies, only works with openai-compatible providers
provider_optionsobjectAdditional provider-specific options for this provider
flat_ratebooleanFlat-rate mode for this provider
modelslist of objectsList of models available from this provider

mcp

One entry per MCP server, named by you. Each entry has these keys. In mcp, type is stdio, sse or http.

KeyTypeDefaultMeaning
commandstringCommand to execute for stdio MCP servers
envobjectEnvironment variables to set for the MCP server
argslist of stringsArguments to pass to the MCP server command
typestring, requiredstdioType of MCP connection. One of stdio, sse, http.
urlstringURL for HTTP or SSE MCP servers
disabledbooleanfalseWhether this MCP server is disabled
disabled_toolslist of stringsList of tools from this MCP server to disable
enabled_toolslist of stringsAllow list of tools from this MCP server
timeoutnumber15Timeout in seconds for MCP server connections
headersobjectHTTP headers for HTTP/SSE MCP servers

lsp

One entry per language server, named by you. Each entry has these keys.

KeyTypeDefaultMeaning
disabledbooleanfalseWhether this LSP server is disabled
commandstringCommand to execute for the LSP server
argslist of stringsArguments to pass to the LSP server command
envobjectEnvironment variables to set to the LSP server command
filetypeslist of stringsFile types this LSP server handles
root_markerslist of stringsFiles or directories that indicate the project root
init_optionsobjectInitialization options passed to the LSP server during initialize request
optionsobjectLSP server-specific settings passed during initialization
timeoutnumber30Timeout in seconds for LSP server initialization

options

General options.

KeyTypeDefaultMeaning
context_pathslist of stringsPaths to files containing context information for the AI
skills_pathslist of stringsPaths to directories containing Agent Skills (folders with SKILL.md files)
tuiobjectTerminal user interface options
debugbooleanfalseEnable debug logging
debug_lspbooleanfalseEnable debug logging for LSP servers
disable_auto_summarizebooleanfalseDisable automatic conversation summarization
data_directorystring.seshatDirectory for storing application data. Relative paths are resolved against the working directory; absolute paths are used as-is.
disabled_toolslist of stringsList of built-in tools to disable and hide from the agent
disable_provider_auto_updatebooleanfalseDisable providers auto-update
disable_default_providersbooleanfalseIgnore all default/embedded providers. When enabled, providers must be fully specified in the config file with base_url, models, and api_key - no merging with defaults occurs
attributionobjectAttribution settings for generated content
disable_metricsbooleanfalseDisable sending metrics
initialize_asstringAGENTS.mdName of the context file to create/update during project initialization
auto_lspbooleantrueAutomatically setup LSPs based on root markers
progressbooleantrueShow indeterminate progress updates during long operations
disable_notificationsbooleanfalseDeprecated: Use notification_style instead. Disable desktop notifications
notification_stylestringautoNotification style to use. One of auto, native, osc, bell, disabled.
disabled_skillslist of stringsList of skill names to disable and hide from the agent

options.tui

Options of the terminal interface.

KeyTypeDefaultMeaning
compact_modebooleanfalseEnable compact mode for the TUI interface
diff_modestringDiff mode for the TUI interface. One of unified, split.
verbose_stepsbooleanfalseShow full agent step narration between tool calls
completionsobjectCompletions UI options
transparentbooleanfalseEnable transparent background for the TUI interface

options.attribution

What Seshat adds to commit messages, issues and pull requests it writes.

KeyTypeDefaultMeaning
trailer_stylestringassisted-byStyle of attribution trailer to add to commits. One of none, co-authored-by, assisted-by.
co_authored_bybooleanDeprecated: use trailer_style instead
generated_withbooleantrueAdd Generated with Seshat line to commit messages and issues and PRs

permissions

Which tools do not ask for approval.

KeyTypeDefaultMeaning
allowed_toolslist of stringsList of tools that don’t require permission prompts

tools.ls

Settings of the directory listing tool.

KeyTypeDefaultMeaning
max_depthnumber0Maximum depth for the ls tool
max_itemsnumber1000Maximum number of items to return for the ls tool

tools.grep

Settings of the search tool.

KeyTypeDefaultMeaning
timeoutduration5sTimeout for the grep tool call

hooks

A map from an event name to a list of shell hooks. Each hook has these keys. Today seshat reads the pre_tool_use event.

KeyTypeDefaultMeaning
matcherstringRegex pattern tested against the tool name. Empty means match all tools.
commandstring, requiredShell command to execute when the hook fires
timeoutnumber30Timeout in seconds for the hook command

image_generation

The provider behind the image tool.

KeyTypeDefaultMeaning
providerstringProvider ID used for image generation
modelstringOptional model override for image generation

text_to_speech

The provider behind the text-to-speech tool.

KeyTypeDefaultMeaning
providerstringProvider ID used for text-to-speech
modelstringOptional model override for text-to-speech
voicestringOptional voice override for text-to-speech
formatstringOptional output format override for text-to-speech

speech_to_text

The provider behind the speech-to-text tool.

KeyTypeDefaultMeaning
providerstringProvider ID used for speech-to-text
modelstringOptional model override for speech-to-text
languagestringOptional language hint for speech-to-text

Next

Updated on 2026-10-16