Remote-safe: traditional automation read & log tools#445
Merged
Conversation
adriannoes
previously approved these changes
Jul 20, 2026
adriannoes
left a comment
Collaborator
There was a problem hiding this comment.
Summary
LGTM for #439. Marks the 11 traditional automation read/log tools with meta=REMOTE and matching REMOTE_SEED entries (tip seed 43 to 54). Mutations and export_automation_jobs stay unmarked. Local drift-guard and MCP unit suite were green on cac828b6. Review mode: checkout+tests+subagents.
What worked well
- Exact issue checklist, lockstep with sibling allowlist PRs.
- Seed comment correctly scopes in-memory caps to
get_automation_jobs_export_csvonly. - Security pass clean; Bugbot "missing REMOTE import" was a false positive (import already on the stacked base).
Also noted
- PR Outcome says both export tools "stream in-memory with caps." Only the CSV tool downloads with caps;
get_automation_jobs_exportis a GraphQL status/fileUrlpoller. Seed comment already has this right. Optional PR-body polish only.
Review path
Base automatically changed from
rc-dev/feat/remote-safe-kb-provider-reads
to
dev
July 20, 2026 14:54
adriannoes
self-requested a review
July 20, 2026 14:55
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #439. Part of migrating the default-deny remote profile to expose the read tools that meet the remote-safe criteria (milestone: Hosted-safe tool surface). Stacked on
rc-dev/feat/remote-safe-kb-provider-reads.Motivation
Under
--profile remotethe server exposes only tools carryingmeta=REMOTE(tracked byREMOTE_SEED); many pure read tools that reach the API with the request-scoped bearer and are fully governed by API permissions were still withheld. This exposes the traditional automation read, log, and job-export status surface.Outcome
Marks 11 automation read/log tools remote-safe:
get_automation,get_automations,get_automation_actions,get_automation_events,get_automation_event_attributes,get_automation_execution_metrics,get_automation_logs,get_automation_logs_by_repo,get_automations_usage,get_automation_jobs_export,get_automation_jobs_export_csv. Of the two export tools,get_automation_jobs_exportis a GraphQL status poller returningstatus/fileUrl(no download), andget_automation_jobs_export_csvdownloads in-memory with a per-call size cap; neither writes a local file nor reads a per-user process-global setting. Each tool carriesmeta=REMOTEand a matchingREMOTE_SEEDentry; the drift-guard test keeps the two in lockstep. No new tools, no behavior change under the local profile.Remote-profile validation
The remote-safe read migration (this PR is part of the stack #437→#441) was verified end-to-end by running the code in
--profile remote --transport httplocally — behaving as a deployed instance — and connecting an MCP HTTP client with a valid RS256 Keycloak bearer. Measured on an integration branch that also carried the in-flight provider-write work (#434), so the withheld count includes those write tools:--profile remote --transport httpexposed 76, withheld 106(default-deny)401(bearer required)tools/listwith a valid RS256 bearerget_organization,get_pipe,get_llm_providers,get_ai_agentscreate_card,create_llm_provider,delete_card,upload_attachment_to_card,execute_graphqlabsent — 0 leakedget_organizationexecuted (isError=false)The 76 remote-safe tools are the 23 pre-existing plus the 53 read tools this migration set (#437–#441) adds. Registration-time filtering is also covered by the
test_remote_profile.pydrift-guard andtest_on_exposes_seed_and_withholds_the_rest.