This might be a stupid question, and I’m sure the answer is either no and/or how I conceive the process/utilization of scope is way off, but is there a way to conditionally block something from being a parser recognized noun?
I know you can do something like…
Before doing anything to the golden apple while there is a person in location, say "[We] [can't] see any such thing."
but that doesn’t really seem to be the ‘proper’ approach.
The proper approach is not to have the item in the room at all when it can’t be interacted with, and move it in place when the restriction doesn’t apply anymore. That is the most robust solution.
That said, if the item absolutely must be in scope at all times, you can make conditional synonyms:
The golden apple is a privately-named thing. Understand "golden" and "apple" as the golden apple when a person is in the location.
…but that’s the more dangerous way to do it since there are so many ways it can go wrong (TAKE ALL, condition applying at wrong times etc.)
You can use Scopability by Brady Garvin to keep the parser from acknowledging certain things. It’s helpful in a few edge cases (e.g. doors which cannot be easily moved).