diff --git a/lib/bb/data_smart.py b/lib/bb/data_smart.py
index fe0bacd13b..0128a5bb17 100644
--- a/lib/bb/data_smart.py
+++ b/lib/bb/data_smart.py
@@ -154,19 +154,20 @@ class VariableParse:
             return str(value)
 
 class DataContext(dict):
-    excluded = set([i for i in dir(builtins) if not i.startswith('_')] + ['bb', 'os', 'oe'])
+    excluded = set([i for i in dir(builtins) if not i.startswith('_')] + ['oe'])
 
     def __init__(self, metadata, **kwargs):
         self.metadata = metadata
         dict.__init__(self, **kwargs)
         self['d'] = metadata
+        self.context = set(bb.utils.get_context())
 
     def __missing__(self, key):
-        if key in self.excluded:
+        if key in self.excluded or key in self.context:
             raise KeyError(key)
 
         value = self.metadata.getVar(key)
-        if value is None or self.metadata.getVarFlag(key, 'func', False):
+        if value is None:
             raise KeyError(key)
         else:
             return value
