diff --git a/recipe_modules/environment/api.py b/recipe_modules/environment/api.py
index 89080c9..b970d2c 100644
--- a/recipe_modules/environment/api.py
+++ b/recipe_modules/environment/api.py
@@ -26,7 +26,6 @@
 
 from PB.recipe_modules.pigweed.environment.options import Options
 
-import attr
 from recipe_engine import config_types, recipe_api
 
 
@@ -223,9 +222,9 @@
     def _toolchain_override(self, env):
         """Checks for a toolchain override and applies it."""
 
-        # Using '$fuchsia/build' properties to simplify interface with the
+        # Using '$fuchsia/checkout' properties to simplify interface with the
         # Fuchsia Toolchain team.
-        fuchsia_build_props = self.m.properties.thaw().get('$fuchsia/build', {})
+        fuchsia_build_props = self.m.properties.thaw().get('$fuchsia/checkout', {})
         toolchain_props = fuchsia_build_props.get('clang_toolchain', {})
         if not toolchain_props:
             return
@@ -234,28 +233,27 @@
             with self.m.context(infra_steps=True):
                 toolchain_dir = env.dir / 'override' / 'clang_toolchain'
 
-                if toolchain_props['source'] == 'cipd':
+                if cipd_version := toolchain_props.get('cipd_version'):
                     pkgs = self.m.cipd.EnsureFile()
                     pkgs.add_package(
                         'fuchsia/third_party/clang/${platform}',
-                        toolchain_props['version'],
+                        cipd_version,
                     )
                     self.m.cipd.ensure(toolchain_dir, pkgs)
 
-                elif toolchain_props['source'] in 'isolated':
+                elif cas_digest := toolchain_props.get('cas_digest'):
                     with self.m.cas.with_instance(
                         'projects/chromium-swarm/instances/default_instance'
                     ):
                         self.m.cas.download(
                             'download',
-                            digest=toolchain_props['version'],
+                            digest=cas_digest,
                             output_dir=toolchain_dir,
                         )
 
                 else:  # pragma: no cover
                     raise KeyError(
-                        f'clang toolchain source {toolchain_props["source"]} '
-                        'not recognized'
+                        f'invalid clang toolchain properties: {toolchain_props!r}'
                     )
 
                 env.prefixes.setdefault('PATH', [])
diff --git a/recipe_modules/environment/test_api.py b/recipe_modules/environment/test_api.py
index aa3fd78..efaa9f2 100644
--- a/recipe_modules/environment/test_api.py
+++ b/recipe_modules/environment/test_api.py
@@ -42,11 +42,18 @@
 
         return self.m.properties(**{name: opts})
 
-    def override_clang(self, source, version):
+    def override_clang(self, cas_digest=None, cipd_version=None):
+        assert bool(cas_digest) != bool(
+            cipd_version
+        ), 'exactly one of cas_digest or cipd_version is required'
+        tc = {}
+        if cas_digest:
+            tc['cas_digest'] = cas_digest
+        if cipd_version:
+            tc['cipd_version'] = cipd_version
+
         props = {
-            '$fuchsia/build': {
-                'clang_toolchain': {'source': source, 'version': version,},
-            },
+            '$fuchsia/checkout': {'clang_toolchain': tc},
         }
 
         return self.m.properties(**props)
diff --git a/recipe_modules/environment/tests/full.py b/recipe_modules/environment/tests/full.py
index 37a2421..fd813be 100644
--- a/recipe_modules/environment/tests/full.py
+++ b/recipe_modules/environment/tests/full.py
@@ -90,13 +90,13 @@
     yield (
         api.test('override-cipd')
         + api.environment.properties(skip_submodule_check=True)
-        + api.environment.override_clang(source='cipd', version='latest')
+        + api.environment.override_clang(cipd_version='latest')
     )
 
     yield (
         api.test('override-cas')
         + api.environment.properties(skip_submodule_check=True)
-        + api.environment.override_clang(source='isolated', version='123456')
+        + api.environment.override_clang(cas_digest='123456')
     )
 
     yield api.test('empty')
