Problem
AI callouts using the server-provided SubRequestClient can retain
the startup body_limits.max_response_bytes ceiling after a
successful dynamic configuration reload.
This makes reload appear successful while affected callouts continue
enforcing stale runtime policy.
Ownership and status
This issue tracks Praxis AI adoption and AI-visible regression
coverage. The underlying server composition, client policy, and
reload lifecycle are generic Praxis concerns tracked upstream by:
Implementation remains blocked until the proposal is accepted and
the required Praxis core API is available. Praxis AI should not
introduce its own reloadable client handle, require callers to
coordinate handle identity, or duplicate generic server, watcher,
and reload lifecycle code.
Scope
- Adopt the Praxis-managed server composition and subrequest-policy
API in the Praxis AI server.
- Remove the duplicated AI lifecycle plumbing superseded by that
upstream API.
- Ensure every AI filter that receives the shared
SubRequestClient
inherits the active server-managed response ceiling. Current
consumers include:
anthropic_web_search
openai_file_resolve
openai_file_search_callout
openai_responses_compact
openai_web_search
- Keep connector settings that require restart explicit and
consistently diagnosed.
- Document which subrequest settings are reloadable versus
restart-required.
Out of scope
- Defining or implementing the upstream Praxis composition API.
- Implementing atomic pipeline, activation, and runtime-policy
publication in Praxis core.
- Defining policy behavior for listeners retained across a
topology-changing reload.
- Unifying Praxis startup, validation/dump, and reload construction
paths.
- Making connection-pool, connection-cap, or circuit-breaker
configuration dynamically reloadable unless the upstream design
explicitly supports it.
These generic guarantees belong to Enhancements EPIC praxis-proxy/praxis#1076 and its
Praxis implementation issues.
Acceptance criteria
- Praxis AI uses the supported Praxis composition and policy API
without copied generic server, watcher, or reload-policy plumbing.
- Reload with a smaller
max_response_bytes value and prove
file-resolve and web-search callouts enforce the smaller ceiling.
- Reload with a larger value and prove an allowed response is no
longer rejected by the startup ceiling.
- All shared-client AI factories consume the Praxis-managed client
without an AI-specific reload handle or handle-identity
requirement.
- Operator documentation distinguishes reloadable response limits
from restart-required connector settings.
Related
Problem
AI callouts using the server-provided
SubRequestClientcan retainthe startup
body_limits.max_response_bytesceiling after asuccessful dynamic configuration reload.
This makes reload appear successful while affected callouts continue
enforcing stale runtime policy.
Ownership and status
This issue tracks Praxis AI adoption and AI-visible regression
coverage. The underlying server composition, client policy, and
reload lifecycle are generic Praxis concerns tracked upstream by:
Implementation remains blocked until the proposal is accepted and
the required Praxis core API is available. Praxis AI should not
introduce its own reloadable client handle, require callers to
coordinate handle identity, or duplicate generic server, watcher,
and reload lifecycle code.
Scope
API in the Praxis AI server.
upstream API.
SubRequestClientinherits the active server-managed response ceiling. Current
consumers include:
anthropic_web_searchopenai_file_resolveopenai_file_search_calloutopenai_responses_compactopenai_web_searchconsistently diagnosed.
restart-required.
Out of scope
publication in Praxis core.
topology-changing reload.
paths.
configuration dynamically reloadable unless the upstream design
explicitly supports it.
These generic guarantees belong to Enhancements EPIC praxis-proxy/praxis#1076 and its
Praxis implementation issues.
Acceptance criteria
without copied generic server, watcher, or reload-policy plumbing.
max_response_bytesvalue and provefile-resolve and web-search callouts enforce the smaller ceiling.
longer rejected by the startup ceiling.
without an AI-specific reload handle or handle-identity
requirement.
from restart-required connector settings.
Related