Commit Graph
5 Commits
Author SHA1 Message Date
Alec Barber c1f1467f30 Handle undefined values before JSON serialization in code mode (#43873)
## Why

Passing `undefined` to a tool could fail JSON parsing because V8 stringifies it as the non-JSON text `undefined`.

## What changed

Return no JSON value for JavaScript `undefined`, so explicit `undefined` tool arguments behave like omitted arguments. Attempts to `store` an undefined value report the existing serializability error and preserve the previous stored value.

## Testing

Add regression coverage for storing `undefined` over an existing `null` value, and extend the current-time tool test to cover `{}`, omitted arguments, and explicit `undefined`.

GitOrigin-RevId: 071050ebb2ecc44c8f08453cf8523b4d21728c7e
2026-09-08 17:51:40 +00:00
Alec Barber f4e6cb7876 Attribute Guardian reviews to OpenAI app tools (#42086)
## Why

Custom MCP tool names may contain user data, so they should not be added to Guardian metric tags.

## What changed

- Add the sanitized `tool` tag to Guardian review counts for MCP calls served by the OpenAI Apps server.
- Keep custom MCP calls and Guardian duration and token-usage histograms on their existing tags.

## Testing

- Cover network access, OpenAI app tool calls, and custom MCP tool calls in the Guardian metrics test.

GitOrigin-RevId: 6bd09ae461eab504f8f07bf7d0c9d1c0aa1317c9
2026-09-01 16:04:32 +00:00
Alec Barber bab7c2dcc1 Improve bearer token secret redaction (#36908)
## Why

Bearer credentials can contain characters outside the previous token pattern or
start with another recognized key prefix. This could leave part of the
credential visible after redaction.

## What changed

- Recognize bearer tokens containing URL-safe and base64-style characters,
  optional padding, and horizontal whitespace after the scheme.
- Redact bearer credentials before matching narrower OpenAI and AWS key forms so
  the whole credential is replaced.
- Preserve delimiters following the credential and avoid matching short tokens,
  joined scheme names, or tokens separated by vertical or non-ASCII whitespace.

## Testing

Added focused positive and negative cases for the supported token forms and
false-positive boundaries.

GitOrigin-RevId: 1e5b10685281dc91d232d619b938bacbadaa47f9
2026-08-04 15:14:57 +00:00
Alec Barber fcf636a41d Redact secrets from app-server command execution items (#36893)
## Why

Client-facing command execution items can include recognizable secrets in the
rendered command or parsed command actions.

## What changed

- Redact secrets in `commandExecution.command` and `commandActions` for live
  items, completed items, and replayed thread history.
- Keep command approval requests backed by the original executable command and
  parsed actions while using the redacted representation for display items.
- Document that execution item commands are redacted display values rather than
  executable commands.

## Testing

- Cover redaction for command conversion, parsed search actions, legacy replay,
  approval flows, completion notifications, and rejected commands.

GitOrigin-RevId: 2ad056f21882bf5166182ad1a4ff0bf6471d9c0e
2026-08-04 13:16:58 +00:00
Alec Barber 23a09eb3c3 fix(mcp): default Apps product SKU to codex (#31803)
## Motivation

Host-owned Apps MCP requests currently omit `X-OpenAI-Product-Sku`
unless `apps_mcp_product_sku` is explicitly configured. Codex requests
should identify themselves with the `codex` product SKU by default.

## Changes

- Default `X-OpenAI-Product-Sku` to `codex`.
- Preserve explicitly configured SKU values.
- Add coverage for both default and configured behavior.

## Impact

Codex Apps MCP requests now include the expected product identity
without requiring local configuration. Existing explicit SKU overrides
are unchanged.

## Testing

- `just test -p codex-mcp
codex_apps_server_config_sets_product_sku_header`
- `just fix -p codex-mcp`
- `just fmt`
2026-07-09 16:04:02 +01:00