# `GeminiCliSdk.Options`
[🔗](https://github.com/nshkrdotcom/gemini_cli_sdk/blob/v0.2.0/lib/gemini_cli_sdk/options.ex#L1)

Configuration for a Gemini CLI invocation.

Every field maps to a specific CLI flag, environment variable, or subprocess
setting. Fields with `nil` default are omitted from the generated argument list.

# `approval_mode`

```elixir
@type approval_mode() :: :default | :auto_edit | :yolo | :plan
```

# `resume_value`

```elixir
@type resume_value() :: true | String.t() | nil
```

# `t`

```elixir
@type t() :: %GeminiCliSdk.Options{
  allowed_mcp_server_names: [String.t()],
  allowed_tools: [String.t()],
  approval_mode: approval_mode() | nil,
  cwd: String.t() | nil,
  debug: boolean(),
  env: map(),
  execution_surface: CliSubprocessCore.ExecutionSurface.t(),
  extensions: [String.t()],
  include_directories: [String.t()],
  max_stderr_buffer_bytes: pos_integer(),
  model: String.t() | nil,
  model_payload: CliSubprocessCore.ModelRegistry.selection() | nil,
  output_format: String.t(),
  resume: resume_value(),
  sandbox: boolean(),
  settings: map() | nil,
  system_prompt: String.t() | nil,
  timeout_ms: pos_integer(),
  yolo: boolean()
}
```

# `validate!`

```elixir
@spec validate!(t()) :: t()
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
