Configuration

Customize Jeff to fit your workflow.

Config File

Jeff uses a YAML configuration file at:

~/.jeff/config.yaml

You can also use a .env file in your current directory for project-specific settings.

Available Settings

# ~/.jeff/config.yaml

api_key: sk-ant-...

model: claude-sonnet-4-5-20250929

permission_mode: ask  # ask, allow, deny, plan

theme: dracula  # dracula, gruvbox, nord

default_tools:
  - Bash
  - Read
  - Write
  - Edit
  - Grep

hooks:
  sessionstart:
    - command: "echo 'Jeff starting'"
      timeout: 5

api_key - Your Anthropic API key

model - Default Claude model to use

permission_mode - How Jeff handles tool permissions

theme - TUI color theme

default_tools - Tools enabled by default

hooks - Event hooks for automation

Environment Variables

Override config settings with environment variables:

ANTHROPIC_API_KEY

Anthropic API key (also: JEFF_API_KEY)

JEFF_MODEL

Override default model

JEFF_PERMISSION_MODE

Permission handling mode

JEFF_CONFIG_PATH

Custom config file path

JEFF_GMAIL_CLIENT_ID

Google OAuth client ID

JEFF_GMAIL_CLIENT_SECRET

Google OAuth client secret

TZ

Timezone for calendar operations

Customization

Create a ~/.jeff/JEFF.md file to customize Jeff's personality and rules. This is loaded into the system prompt.

# ~/.jeff/JEFF.md

# My Preferences
- Always sign off emails with "Best, Harper"
- My timezone is Pacific
- Don't schedule meetings before 10am

Data Directory

Jeff stores all data in ~/.jeff/:

config.yaml - Main configuration

jeff.db - Conversation history (SQLite)

tokens/ - OAuth tokens

templates/ - Session templates

JEFF.md - Personality customization