The driver API (where green contexts are relevant) defines contexts which are not interoperable with the runtime API, unless the driver API is using the context that the runtime API uses by default (the so-called “primary” context). More specifically, CUDA entities that have a “context” or “device” dependency (including streams) are not usable/relevant except on the context (or device in the runtime API world) that they have an association to. Therefore your observation is probably expected. This isn’t really unique or specific to green contexts, but pertains to any stream created in the driver API when the the current context is not the primary context. In the driver API, typically the current context is not the primary context unless you do something explicitly like cuDevicePrimaryCtxRetain, or similar.
I think you are wrong. Green context is a lightweight context. The streams created though green contexts should be able to use directly without switching primary context. You can see how to use it here
Fortunately, after I upgrade my CUDA from 12.6 to 12.8, this issue has been fixed.