I'd like to encourage anyone with protocols that use a "Safe Cache Reader" to replace them with the native Cache Reader component. The Cache Reader can now get the "Safe" behavior by setting "If Cache Does Not Exist" to "Do Nothing". This parameter was added in version 2025 and noted in the Product Release Document (PRD).
While the Safe Cache Reader pattern is still supported and will continue to work, it generates a log message each time the cache doesn't exist. These log message can quickly pile up and thwart the ability to find more significant errors when necessary.
Background
The Cache Reader component used to present a dilemma in workflows where the cache may not exist, even during normal operation. As with other readers, if the input target does not exist, the Cache Reader would throw an error. Unlike with other readers, with the Cache Reader there proved to be a common use case where the protocol developer would like to read and process the cache when it exists but otherwise continue with the protocol. In this case the workaround was to place the Cache Reader inside a subprotocol which has custom error handling--a general technique for catching errors. This workaround was typically captioned as a Safe Cache Reader.
