Configuring

You can configure Bob Shell to match your workflow preferences.

Getting started

You can configure Bob Shell using:

  1. Project-specific settings: Create .bob/settings.json in your project directory
  2. User-wide settings: Edit ~/.bob/settings.json in your home directory
  3. Command-line arguments: Run --sandbox when starting Bob Shell
# Example: Start Bob Shell with sandbox mode enabled
bob --sandbox

Configuration system

How configuration works

Bob Shell uses a layered configuration system where settings from different sources are combined according to a specific precedence order:

PrioritySourceLocationScope
1 (Highest)Command-line argumentsbob --option valueCurrent session
2Environment variablesShell or .env filesSystem/session
3System settings file/etc/bobshell/settings.jsonAll users, all projects
4Project settings file.bob/settings.jsonCurrent project
5User settings file~/.bob/settings.jsonCurrent user, all projects
6System defaults file/etc/bobshell/system-defaults.jsonAll users, all projects
7 (Lowest)Hardcoded defaultsBuilt into Bob ShellAlways applied

When the same setting is defined in multiple places, the higher-priority source takes precedence.

Settings file locations

Bob Shell looks for settings files in these locations:

  • Project settings: .bob/settings.json in your project directory
  • User settings: ~/.bob/settings.json in your home directory
  • System settings:
/etc/bobshell/settings.json
C:\ProgramData\bobshell\settings.json
/Library/Application Support/Bob Shell/settings.json
  • System defaults:
/etc/bobshell/system-defaults.json
C:\ProgramData\bobshell\system-defaults.json
/Library/Application\ Support/Bob\ Shell/system-defaults.json

Core settings categories

Bob Shell settings are organized into categories. Each category contains related settings that control specific aspects of Bob Shell's behavior.

General settings

Control basic Bob Shell behavior and preferences.

{
  "general": {
    "preferredEditor": "code",
    "vimMode": false,
    "disableAutoUpdate": false,
    "disableUpdateNag": false,
    "checkpointing": {
      "enabled": true
    }
  }
}
SettingTypeDefaultDescription
preferredEditorstringundefinedEditor to use when opening files
vimModebooleanfalseEnable Vim keybindings
disableAutoUpdatebooleanfalsePrevent automatic updates
disableUpdateNagbooleanfalseHide update notifications
checkpointing.enabledbooleanfalseEnable session checkpointing

UI settings

Customize Bob Shell's appearance and interface elements.

{
  "ui": {
    "theme": "GitHub",
    "hideBanner": true,
    "hideTips": false,
    "showLineNumbers": true
  }
}
SettingTypeDefaultDescription
themestringundefinedUI color theme
customThemesobject{}Custom theme definitions
hideWindowTitlebooleanfalseHide window title bar
hideTipsbooleanfalseHide helpful tips
hideBannerbooleanfalseHide application banner
hideFooterbooleanfalseHide footer
showMemoryUsagebooleanfalseShow memory usage stats
showLineNumbersbooleanfalseShow line numbers in chat
showCitationsbooleanfalseShow citations for generated text
accessibility.disableLoadingPhrasesbooleanfalseDisable loading phrases

Context settings

Control how Bob Shell manages project context and memory.

{
  "context": {
    "fileName": ["CONTEXT.md", "AGENTS.md"],
    "discoveryMaxDirs": 200,
    "includeDirectories": ["../shared-lib", "~/reference-code"],
    "fileFiltering": {
      "respectGitIgnore": true,
      "respectBobIgnore": true
    }
  }
}
SettingTypeDefaultDescription
fileNamestring/arrayundefinedContext file name(s)
importFormatstringundefinedMemory import format
discoveryMaxDirsnumber200Max directories to search
includeDirectoriesarray[]Additional directories to include
loadFromIncludeDirectoriesbooleanfalseLoad context from included dirs
fileFiltering.respectGitIgnorebooleantrueHonor .gitignore files
fileFiltering.respectBobIgnorebooleantrueHonor .bobignore files
fileFiltering.enableRecursiveFileSearchbooleantrueEnable recursive file search

Tools settings

Configure how Bob Shell uses and manages tools.

{
  "tools": {
    "sandbox": "docker",
    "allowed": ["run_shell_command(git)", "run_shell_command(npm test)"],
    "exclude": ["write_file"]
  }
}
SettingTypeDefaultDescription
sandboxboolean/stringundefinedSandbox running environment
usePtybooleanfalseUse node-pty for shell commands
corearrayundefinedRestrict built-in tools (allowlist)
excludearrayundefinedTools to exclude from discovery
allowedarrayundefinedTools that bypass confirmation
discoveryCommandstringundefinedCommand for tool discovery
callCommandstringundefinedCommand for calling tools

MCP settings

Configure Model Context Protocol server connections.

{
  "mcpServers": {
    "mainServer": {
      "command": "bin/mcp_server.py"
    },
    "remoteServer": {
      "url": "https://example.com/mcp",
      "headers": {
        "Authorization": "Bearer token123"
      }
    }
  }
}
SettingTypeDefaultDescription
mcp.serverCommandstringundefinedCommand to start MCP server
mcp.allowedarrayundefinedAllowlist of MCP servers
mcp.excludedarrayundefinedDenylist of MCP servers
mcpServers.<SERVER_NAME>object-Server-specific configuration

For each MCP server, you can configure:

  • command: Command to run (for local servers)
  • args: Command-line arguments
  • env: Environment variables
  • cwd: Working directory
  • url: Server-Sent Events (SSE) endpoint URL (for remote servers)
  • httpUrl: HTTP endpoint URL (for remote servers)
  • headers: HTTP headers for requests
  • timeout: Request timeout in milliseconds
  • trust: Trust server and bypass confirmations
  • includeTools: Tool names to include
  • excludeTools: Tool names to exclude

Command-line arguments

Pass these arguments when starting Bob Shell to override settings for that session:

# Start Bob Shell with specific settings
bob --sandbox --approval-mode auto_edit
ArgumentDescriptionExample
--prompt, -pNon-interactive promptbob -p "Explain this code"
--prompt-interactive, -iInteractive initial promptbob -i "Help me debug"
--sandbox, -sEnable sandbox modebob -s
--debug, -dEnable debug modebob -d
--yoloAuto-approve all tool callsbob --yolo
--approval-modeSet tool approval modebob --approval-mode=auto_edit
--allowed-toolsTools to auto-approvebob --allowed-tools="git status"
--include-directoriesAdd directories to workspacebob --include-directories=../lib
--chat-modeChoose the mode for interactionbob --chat-mode
--hide-intermediary-outputOutput only the final task completion outputbob --hide-intermediary-output
--show-licenseShow full path to license files for reviewbob --show-license
--accept-licenseAccept the IBM license agreement and continuebob --accept-license
--instance-idInstance ID to use for this Bob Shell sessionbob --instance-id=my-instance
--team-idTeam ID to use for this Bob Shell sessionbob --team-id=my-team

Context files

Context files (like AGENTS.md) provide instructions to the AI model. These files are loaded hierarchically:

  1. Global context: ~/.bob/AGENTS.md (applies to all projects)
  2. Project context: AGENTS.md in project root and parent directories
  3. Local context: AGENTS.md in subdirectories (for component-specific instructions)

Example context file

# Project: My TypeScript Library

## General instructions

- Follow existing coding style
- Add JSDoc comments to all functions
- Prefer functional programming patterns
- Target TypeScript 5.0 and Node.js 20+

## Coding style

- Use 2 spaces for indentation
- Interface names should be prefixed with `I`
- Private class members should be prefixed with `_`
- Use strict equality (`===` and `!==`)

Managing context

  • Use /memory refresh to reload all context files
  • Use /memory show to view the current context

Sandboxing

Sandboxing provides security when running potentially unsafe operations:

# Enable sandboxing for a session
bob --sandbox

You can create custom sandbox environments:

  1. Create .bob/sandbox.Dockerfile in your project
  2. Base it on the bobshell-sandbox image
  3. Add your custom dependencies
FROM bobshell-sandbox

# Add custom dependencies
RUN apt-get update && apt-get install -y python3-dev

Build and use your custom sandbox:

BUILD_SANDBOX=1 bob -s
Note:

The create-pr command is not compatible with Sandbox sessions.

Usage statistics

Bob Shell collects anonymous usage statistics to improve the product. This includes:

  • Tool usage patterns (names, success/failure, duration)
  • API request metrics (model, duration, success)
  • Session configuration information

No personal information, prompt content, or file content is collected.

To opt out, add this to your settings:

{
  "privacy": {
    "usageStatisticsEnabled": false
  }
}
How is this topic?