It's usually implemented as a keyword the model is trained to react to. In API-only models like Claude you don't have the access to it, as it's inserted into a masked area. The reason the cache might break is that it's inserted at the start, and if you change it the rest will be invalidated.