2.7 KiB
ADR-003: Public-read source URL for fetch_oss_file
Status
Accepted
Date
2026-07-30
Context
Controlled SuperAgent traces showed that fetch_oss_file accepts object_uri and filename. An oss://
request failed with public_endpoint_missing, while earlier HTTPS attempts reached file-type handling. The user
confirmed that the installed Tool reads a publicly accessible OSS address without a Provider and that the OSS
deployment is public-read.
The previous ARR adapter explicitly wrote every object with object ACL private. That overrides a public-read
bucket and would make a generated public URL unusable. At the same time, making every processing output public
would unnecessarily widen exposure.
Decision
- ARR requires the integration bucket to report bucket ACL
public-read; anonymous writes remain forbidden. - Only
committed/source_xml/source.xmlis written with object ACLpublic-read. Staged objects, generated reports, result JSON and exchange objects remain explicitlyprivate. arr-opera-daily-program-input-3includes a requiredoss.urlgenerated by ARR ashttps://{bucket}.oss-{region}.aliyuncs.com/{encoded-object-key}. It contains no query signature or secret.- The Main Prompt passes
oss.urlunchanged asfetch_oss_file.object_uriand the canonical attachment name asfilename, exactly once. It must not constructoss://, sign or substitute another URL. - XML extension/MIME acceptance remains a separate platform Tool configuration requirement.
Rationale
ARR owns the bucket, endpoint and immutable object key, so it can generate one deterministic address without asking the Agent to infer storage semantics. Object-level ACL selection satisfies anonymous source download while keeping intermediate and output artifacts private.
Consequences
fetch_oss_fileneeds no OSS Provider, AccessKey or signed URL for this flow.- A committed source XML is anonymously readable to anyone who has its URL; the URL is not a secret or an authorization mechanism. Retention, access logging and public-source privacy review remain deployment duties.
- Readiness now rejects a private bucket for this integration.
- Deploying code and Prompt changes does not by itself allow XML; the platform must permit
.xmlandapplication/xmlif it still returnsextension_not_allowed.
Supersedes
- The private-object/credential-backed Provider assumption in earlier implementation notes and the historical
oss://Prompt experiment.
Related
arr_processing/source_message.pyarr_storage/aliyun_oss_v2.pyprompts/arr_opera_daily_program_input.schema.jsonprompts/arr_opera_daily_main_agent_prompt.md.project-docs/50-evidence/topics/2026-07-30-superagent-fetch-oss-prompt-experiment.md