Skip to content

Document the security release across core, API and client - #15

Merged
Iamsdt merged 11 commits into
mainfrom
fix/security-review
Oct 28, 2026
Merged

Iamsdt merged 11 commits into
mainfrom
fix/security-review

Conversation

@Iamsdt

@Iamsdt Iamsdt commented Oct 27, 2026

Copy link
Copy Markdown
Contributor

This brings the docs in line with the security fixes landing in three repos:

  • Core: 10xGraph/10xGraph fix/fetch-ssrf-file-tool-root
  • API: 10xGraph/10xgraph-api fix/reserve-core-config-keys
  • Client: 10xGraph/10xgraph-client fix/security-review

Several of those changes break existing code or deployments, so the guides, references and examples are updated to match. Pages that showed APIs that no longer exist (the graph-level memory API) or unsafe code (eval() in a calculator tool) are corrected. Merge this when those three PRs are merged and released.

The PR also adds one new blog post and extends an existing one.

Core (Python library)

  • Memory.
    • The graph-level memory API (MemoryIntegration, create_memory_preload_node, memory_tool) is removed from every page. Memory is configured only with Agent(memory=MemoryConfig(...)).
    • Documented the per-scope collection (a name or a function of the run config) and its precedence.
    • Documented the reserved shared owners from system_user_id(name), and that every store operation needs a non-empty user_id.
    • Preload memories are now described as a fenced <user_memories_...> block in the latest user message, not a system message.
    • The Qdrant pages now require qdrant-client and server 1.10 or newer.
  • RAG. RAGAgent docs cover store_config_builder, the default knowledge-base owner, and the request-only <retrieved_documents_...> block.
  • Tools.
    • create_file_tools(root=...) is the way to set the file root; the run-config root is deprecated.
    • Documented the default deny list for secret files, max_parallel_tool_calls, and the generic "internal error (reference ...)" text a model now sees.
    • Handoffs need a registered handoff tool.
  • Media. MediaFetchPolicy and compile(media_policy=...) for client-supplied media URLs.
  • Interrupts. resume_interrupt_id, response_schema validation, InterruptMismatchError and ResumeValidationError, with their codes on the error-codes page.
  • Prebuilt agents. SupervisorTeamAgent, PlanActReflectAgent and StructuredOutputAgent limits are per turn.
  • Observability. user_id_mode on the OTEL, Logfire and LangSmith setup, and Kafka TLS/SASL options on the publishers page.
  • Examples. The graceful-shutdown example and pages that copied it use safe_calculator instead of eval(). The RAG example is updated.

API server

  • Thread ids. Documented the runs.thread_ids: "server" default: start a new thread by omitting the id, and read meta.thread_id from the response.
  • Busy threads. Documented the per-thread run lock: a 409 "thread is busy", the on_busy option, and how this works on WebSocket and AG-UI.
  • Resume. Resume with interrupt_id: 409 on a mismatch, 422 when the schema check fails.
  • Client input rules. Client messages must have the user role. Built-in state fields can't be written by clients. The server generates message ids. Request size limits are listed. Media URLs are checked before the run.
  • New routes. PUT /v1/threads/{id}/messages/{message_id} (feedback) and DELETE /v1/files/{file_id}. Message import (POST .../messages) needs the checkpointer:import scope.
  • Auth. Documented __system__ ids being refused, JWT user_id and scope-claim validation, the bearer token on HTTP coming from the Authorization header only, the token re-check on /v1/graph/live, and owner isolation as the default for custom authorization backends.
  • Production. Covered MODE validation, STRICT_PRODUCTION_CHECKS on by default, the 300 s runs.timeout default, hidden error text in stream chunks, and observability.user_id_mode. The production checklist and troubleshooting pages are updated.
  • Deployment. Docker, compose and Kubernetes pages match the locked-down generated files: non-root uid, read-only filesystem, compose bound to 127.0.0.1, and Secrets for Kubernetes.

TypeScript client

  • New options. on_busy, resume and interrupt_id on invoke, stream and wsStream.
  • New error. ConflictError on the errors reference and error-handling page.
  • New methods. deleteFile and updateThreadMessageFeedback.
  • Deprecation. addThreadMessages is deprecated, with the admin-scope note.
  • fixGraph. Corrected what the repair does.

Blog

  • New post: "Moving past vibe checks: deterministic agent evals in CI" (deterministic-evals-for-ai-agents.mdx). It shows how to gate pull requests on tool trajectories with eval sets and pytest, with no judge model.
  • Updated: "hot-and-cold-agent-memory" gains a section on the PgCheckpointer Postgres schema and queries.

Checks

  • npm run build succeeds (search index, llms.txt, markdown twins)
  • Code samples checked against the released packages
  • Links checked

Iamsdt added 11 commits October 26, 2026 23:06
- Updated the last modified date to 2026-10-26 across multiple documentation files.
- Enhanced the security model description in `security-and-validators.md` to include the new admin-only `checkpointer:import` scope.
- Clarified the API server's handling of thread state and message history in `serving-agents.md`, including new endpoints for managing messages.
- Added details about the `checkpointer:import` scope in `authorization-scopes.md` and its implications for message handling.
- Expanded the section on prompt injection validation in `protect-against-prompt-injection.md` to include limitations and recommendations for tool outputs.
- Introduced new guidelines for client-side state management in `use-custom-state.md`, emphasizing security and validation.
- Deprecated the `addThreadMessages` method in the TypeScript client reference, requiring admin scope for message imports.
- Updated REST API documentation to reflect new permissions and input validation rules, particularly for message handling and state management.
- Enhanced WebSocket documentation to clarify requirements for resuming after remote tool calls.
- Updated the last modified date to 2026-10-26 across multiple files.
- Added a new section on deleting files in the files-and-multimodal documentation.
- Expanded the media and files documentation to include new methods and security measures.
- Enhanced the authorization scopes documentation to include the new `files:delete` scope.
- Updated prebuilt tools documentation to clarify file access and security measures.
- Added details on file lifecycle management and deletion in the server documentation.
- Improved error handling descriptions for file operations in the API reference.
- Clarified the handling of external media URLs and their security checks.
- Changed the updated date in multiple documentation files to 2026-10-27.
- Added new error codes: `INTERRUPT_001` for `InterruptMismatchError` and `INTERRUPT_002` for `ResumeValidationError`.
- Documented the behavior and context for `InterruptMismatchError` and `ResumeValidationError` in the exceptions reference.
- Enhanced AG-UI and REST API documentation to clarify the handling of concurrent runs and request limits.
- Updated the production checklist to include details on thread locking and error handling in production mode.
- Improved WebSocket documentation to reflect changes in handling resumes and thread management.
- Revised CORS and security headers documentation to clarify the implications of using wildcard origins and credentials in production.
- Added details about strict production checks that prevent server startup with wildcard origins and hosts.
- Updated deployment documentation to emphasize the need for explicit origins and allowed hosts in production environments.
- Clarified thread management in the invoke and stream documentation, emphasizing the importance of using the returned thread_id for continuity.
- Enhanced troubleshooting guides to address common issues related to CORS, thread continuity, and production mode configurations.
- General updates to timestamps across multiple documentation files to reflect the latest changes.
- Changed the update date for the threads and memory tutorial.
- Revised explanations in the "What is agent memory" glossary entry to clarify memory retrieval processes.
- Updated the prebuilt tools guide to reflect the removal of the legacy memory_tool and emphasize the use of MemoryConfig for memory management.
- Enhanced the memory tools documentation to clarify the functionality of user_memory_tool and agent_memory_tool, and removed references to the deprecated memory_tool.
- Adjusted the use-memory-store guide to clarify memory retrieval modes and their implications.
- Updated the memory stores reference to reflect changes in memory retrieval functions and the removal of MemoryIntegration.
- Revised the prebuilt tools reference to remove the legacy memory_tool and clarify the current memory tool factories.
… enhancements

- Updated the `updated` date in multiple documents to 2026-10-27.
- Replaced custom math evaluation function with `safe_calculator` in state graph examples to enhance security.
- Added `user_id_mode` configuration option to control how user IDs are handled in traces, with options for raw, hash, and mask.
- Enhanced Kubernetes and Docker deployment documentation with security best practices and updated image naming conventions.
- Clarified observability settings and their implications in production, including recommendations for using TLS.
- Improved readiness and liveness probe configurations in Kubernetes manifests.
- Added details about the handling of sensitive information in traces and event publishers.
@Iamsdt
Iamsdt merged commit c7d5e76 into main Oct 28, 2026
1 check failed
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