"environment" here is gp environment like outputCoordinateSystem or cellSize. As stated the application has a set of gp environments, as does a gp tool, as does a model or script, model process. These have clear hierarchy, the "parent" passes it's environment values to the "child" (as a default set of environments), the "child" can modify it's environments settings, but they those changes do not affect the "parent".
When it comes to execution time, that hierarchy doesn't matter, the execution logic will receive 1 set of parameters and 1 set of gpenvironment values.
This is an intentional design decision of the gp framework. It should not matter to the tool which context (tool dialog in app, script, model, service) it is being run in, the tool should perform it's operation based on the set of input parameters + environment settings it receives.
Sounds like there's something specific you're trying to achieve, maybe post that in a comment.