Configuration and credential files

This page describes the configuration and credential files used by the agent tools in this repository.

Configure Codex

See Getting started: Codex for initial setup.

  • ~/.codex: Config, skills, persistent state directory. Mounted into containers running Codex.

  • ~/.codex/config.toml: Config file

  • ./codex/auth.json: Credentials

The Codex sandbox does not work well inside a container. Since we are using the container as a security boundary, launch.py automatically includes the --sandbox danger-full-access argument. We do not suggest adding that to your config file in case you run Codex locally, hence only adding it at run time when launching a container.

Here is an example ~/.codex/config.toml to use.

model = "gpt-5.4"
model_reasoning_effort = "medium"
analytics.enabled = false

# Ask for approval on each command.
# You can override on the command line with --ask-for-approval on-request
approval_policy = "untrusted"

# Shows detailed model reasoning.
# Change to "concise" if this is too much.
model_reasoning_summary = "detailed"

# Less sycophantic.
personality = "pragmatic"

# Updates are managed through the container
check_for_update_on_startup = false

# Lets you keep an eye on token usage
[tui]
status_line = ["model-with-reasoning", "current-dir", "used-tokens", "total-input-tokens", "total-output-tokens"]

See Codex config basics for more.

Configure Claude Code

Both of these paths are mounted into containers running Claude.

  • ~/.claude/: Config, skills, persistent state directory.

  • ~/.claude.json – UI settings, metrics, and approved directories

Most of the configuration we’re using for Claude Code is in the environment variables, originally set up in Getting started: Claude Code, and the Setting up AWS STRIDES Single Sign-On setup.

~/.claude/settings.json needs to at least exist and have an empty JSON array in it, and launch.py does this automatically by default. When you use the /model command within Claude Code, it will enter that choice into this file for persistence, after which this file will look something like:

{
  "model": "opus"
}

You can prevent the model from accessing paths. For example, to exclude the data and env directories from being read in the current project, you might include this in a .claude/settings.json in the current project:

 {
   "permissions": {"deny": ["Read(./data)", "Read(./env)"]}
}

In such cases, you should probably include the directories in a .gitignore file so that tools like ripgrep (rg) won’t look in there either.

If you copy the tools/claude-status.sh file from this repo to your ~/.claude directory, you can add the following block to ~/.claude/settings.json to get a custom status line:

{
  "statusLine": {
    "type": "command",
    "command": "~/.claude/claude-status.sh"
  }
}

Which looks like this, where:

  • P: percentage of context window

  • I: input tokens

  • O: output tokens

  • R: cache read tokens

  • W: cache write tokens

_images/claude-status.png

See that claude-status.sh file for tips on how to modify.

See Claude Code Settings for more.

Configure AWS SSO

  • ~/.aws: Config directory. Mounted into containers running Claude or Pi with Bedrock.

  • ~/.aws/config: contains profile information (SSO session & account ID)

  • ~/.aws/sso: credentials for SSO

Configure Pi

See Getting started: Pi for initial setup.

  • ~/.pi: Config, skill, persistent state directory. Mounted into containers running Pi.

See Pi settings for more.