Skip to content

Skip malformed session history items#3578

Open
White-Mouse wants to merge 1 commit into
openai:mainfrom
White-Mouse:codex/session-input-item-shape-binding
Open

Skip malformed session history items#3578
White-Mouse wants to merge 1 commit into
openai:mainfrom
White-Mouse:codex/session-input-item-shape-binding

Conversation

@White-Mouse
Copy link
Copy Markdown

Summary

Adds a shared session-history admission helper for decoded response input items and applies it across the built-in plaintext session backends. JSON-valid scalar/list rows are now skipped the same way invalid JSON rows are skipped instead of being replayed as model input history.

This covers SQLiteSession, AsyncSQLiteSession, RedisSession, DaprSession, SQLAlchemySession, and MongoDBSession.

Why

Built-in session backends store response input items as JSON rows and later replay decoded rows into Runner model input. Invalid JSON rows were already ignored, but a row that decoded successfully to a JSON scalar or array could still be returned as session history. Persistent-store rows should be admitted only when they are shaped like response input item objects.

Tests

  • uv run --extra sqlalchemy pytest tests/memory tests/extensions/memory -q
  • uv run ruff check src/agents/memory/session.py src/agents/memory/sqlite_session.py src/agents/extensions/memory/async_sqlite_session.py src/agents/extensions/memory/redis_session.py src/agents/extensions/memory/dapr_session.py src/agents/extensions/memory/sqlalchemy_session.py src/agents/extensions/memory/mongodb_session.py tests/memory/test_session.py tests/extensions/memory/test_async_sqlite_session.py tests/extensions/memory/test_redis_session.py tests/extensions/memory/test_dapr_session.py tests/extensions/memory/test_mongodb_session.py tests/extensions/memory/test_sqlalchemy_session.py
  • uv run ruff format --check src/agents/memory/session.py src/agents/memory/sqlite_session.py src/agents/extensions/memory/async_sqlite_session.py src/agents/extensions/memory/redis_session.py src/agents/extensions/memory/dapr_session.py src/agents/extensions/memory/sqlalchemy_session.py src/agents/extensions/memory/mongodb_session.py tests/memory/test_session.py tests/extensions/memory/test_async_sqlite_session.py tests/extensions/memory/test_redis_session.py tests/extensions/memory/test_dapr_session.py tests/extensions/memory/test_mongodb_session.py tests/extensions/memory/test_sqlalchemy_session.py
  • uv run python -m py_compile src/agents/memory/session.py src/agents/memory/sqlite_session.py src/agents/extensions/memory/async_sqlite_session.py src/agents/extensions/memory/redis_session.py src/agents/extensions/memory/dapr_session.py src/agents/extensions/memory/sqlalchemy_session.py src/agents/extensions/memory/mongodb_session.py tests/memory/test_session.py tests/extensions/memory/test_async_sqlite_session.py tests/extensions/memory/test_redis_session.py tests/extensions/memory/test_dapr_session.py tests/extensions/memory/test_mongodb_session.py tests/extensions/memory/test_sqlalchemy_session.py
  • git diff --check

@White-Mouse White-Mouse marked this pull request as ready for review June 4, 2026 13:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant