Description
Skills.from_url(...) / Skills.fromUrl(...) currently accepts both http:// and https:// skill archives in Python and Java. The archive is downloaded and extracted without checking an operator-supplied digest or other integrity expectation.
Remote skill content is privileged: its SKILL.md becomes instructions consumed by the agent, and its bundled resources may be used by the built-in tools. A URL skill source should therefore be treated with the same care as executable code rather than ordinary configuration data.
Flink Agents is currently in the experimental 0.x release series and does not provide production-readiness guarantees. This issue tracks the hardening needed before production readiness / 1.0.
Expected behavior
- Reject plain HTTP URL skill sources by default. If an unsafe compatibility opt-in is retained, it should be explicit and clearly documented.
- Allow an operator to pin an expected content digest, initially SHA-256, and verify it before extraction.
- Fail closed with a clear error when transport or integrity requirements are not met.
- Keep the source configuration and behavior aligned across Java and Python, including plan serialization where applicable.
- Document that remote skill content is trusted instructions/code and explain how skill directories interact with the built-in tools.
- Add focused Java and Python tests for HTTP rejection or opt-in behavior, matching and mismatching digests, and unchanged safe extraction behavior.
How to reproduce
- Serve a valid skill archive over plain HTTP.
- Configure it through
Skills.from_url(...) or Skills.fromUrl(...).
- Observe that the archive is accepted and materialized.
- Change the archive at the same URL and load it again.
- Observe that the changed content is accepted without any integrity signal or operator-provided expectation.
Version and environment
Confirmed in Apache Flink Agents 0.3.1 and on main as of 2026-08-12, in both the Java and Python implementations.
Description
Skills.from_url(...)/Skills.fromUrl(...)currently accepts bothhttp://andhttps://skill archives in Python and Java. The archive is downloaded and extracted without checking an operator-supplied digest or other integrity expectation.Remote skill content is privileged: its
SKILL.mdbecomes instructions consumed by the agent, and its bundled resources may be used by the built-in tools. A URL skill source should therefore be treated with the same care as executable code rather than ordinary configuration data.Flink Agents is currently in the experimental 0.x release series and does not provide production-readiness guarantees. This issue tracks the hardening needed before production readiness / 1.0.
Expected behavior
How to reproduce
Skills.from_url(...)orSkills.fromUrl(...).Version and environment
Confirmed in Apache Flink Agents 0.3.1 and on
mainas of 2026-08-12, in both the Java and Python implementations.