diff --git a/recipes/run_script.expected/run_script.json b/recipes/run_script.expected/run_script.json
index 534dd39..e162f84 100644
--- a/recipes/run_script.expected/run_script.json
+++ b/recipes/run_script.expected/run_script.json
@@ -7,13 +7,25 @@
       "--json-output",
       "/path/to/tmp/json",
       "copy",
-      "{\"bucket\": \"bucket\", \"builder\": \"builder\", \"id\": \"0\", \"number\": \"0\", \"project\": \"project\", \"tags\": []}",
+      "{\"bucket\": \"ci\", \"builder\": \"builder\", \"id\": \"8945511751514863184\", \"number\": \"0\", \"project\": \"project\", \"tags\": []}",
       "[START_DIR]/buildbucket-metadata.json"
     ],
     "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
     "name": "write bb metadata",
     "~followup_annotations": [
-      "@@@STEP_LOG_LINE@buildbucket-metadata.json@{\"bucket\": \"bucket\", \"builder\": \"builder\", \"id\": \"0\", \"number\": \"0\", \"project\": \"project\", \"tags\": []}@@@",
+      "@@@STEP_LOG_LINE@buildbucket-metadata.json@{\"bucket\": \"ci\", \"builder\": \"builder\", \"id\": \"8945511751514863184\", \"number\": \"0\", \"project\": \"project\", \"tags\": []}@@@",
       "@@@STEP_LOG_END@buildbucket-metadata.json@@@"
     ]
   },
@@ -25,9 +37,9 @@
     ],
     "cwd": "[START_DIR]/co",
     "env": {
-      "BUILDBUCKET_ID": "0",
+      "BUILDBUCKET_ID": "8945511751514863184",
       "BUILDBUCKET_METADATA_JSON": "[START_DIR]/buildbucket-metadata.json",
-      "BUILDBUCKET_NAME": "project:bucket:builder",
+      "BUILDBUCKET_NAME": "project:ci:builder",
       "BUILD_NUMBER": "0",
       "CAS_DIGEST_IN": "hashy-hashy-hashy",
       "CCACHE_DIR": "[CACHE]/ccache",
@@ -38,14 +50,27 @@
       "GOCACHE": "[CACHE]/go",
       "NO_COLOR": "1",
       "PIP_CACHE_DIR": "[CACHE]/pip",
-      "PROPERTIES_OUT": "[CLEANUP]/tmp_tmp_2/output_properties.json",
+      "PROPERTIES_OUT": "[CLEANUP]/tmp_tmp_1/output_properties.json",
       "PW_ENVIRONMENT_NO_ERROR_ON_UNRECOGNIZED": "1",
       "PW_ENVSETUP_DISABLE_SPINNER": "1",
       "PW_PRESUBMIT_DISABLE_SUBPROCESS_CAPTURE": "1",
       "PW_TEST_VAR": "test_value",
       "PW_USE_COLOR": "",
       "TEST_TMPDIR": "[CACHE]/bazel",
-      "TRIGGERING_CHANGES_JSON": "[CLEANUP]/tmp_tmp_1"
+      "TRIGGERING_CHANGES_JSON": null,
+      "USE_RBE": "false"
+    },
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
     },
     "name": "run foo/bar/run-tests.sh"
   },
@@ -57,13 +82,13 @@
       "--json-output",
       "/path/to/tmp/json",
       "copy",
-      "[CLEANUP]/tmp_tmp_2/output_properties.json",
+      "[CLEANUP]/tmp_tmp_1/output_properties.json",
       "/path/to/tmp/"
     ],
     "env": {
-      "BUILDBUCKET_ID": "0",
+      "BUILDBUCKET_ID": "8945511751514863184",
       "BUILDBUCKET_METADATA_JSON": "[START_DIR]/buildbucket-metadata.json",
-      "BUILDBUCKET_NAME": "project:bucket:builder",
+      "BUILDBUCKET_NAME": "project:ci:builder",
       "BUILD_NUMBER": "0",
       "CCACHE_DIR": "[CACHE]/ccache",
       "CLICOLOR": "0",
@@ -79,9 +104,21 @@
       "PW_TEST_VAR": "test_value",
       "PW_USE_COLOR": "",
       "TEST_TMPDIR": "[CACHE]/bazel",
-      "TRIGGERING_CHANGES_JSON": "[CLEANUP]/tmp_tmp_1"
+      "TRIGGERING_CHANGES_JSON": null
     },
     "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
     "name": "read output properties",
     "~followup_annotations": [
       "@@@STEP_LOG_LINE@output_properties.json@{@@@",
diff --git a/recipes/run_script.py b/recipes/run_script.py
index ecadff2..757b6df 100644
--- a/recipes/run_script.py
+++ b/recipes/run_script.py
@@ -16,7 +16,7 @@
 from __future__ import annotations
 
 import re
-from collections.abc import Iterator
+from collections.abc import Iterator, Mapping
 from typing import Any
 
 from recipe_engine import (
@@ -35,6 +35,7 @@
     'pigweed/environment',
     'pigweed/limited_cq',
     'pigweed/raw_result',
+    'recipe_engine/buildbucket',
     'recipe_engine/context',
     'recipe_engine/file',
     'recipe_engine/path',
@@ -47,16 +48,12 @@
 
 @raw_result_api.wrap_run_steps
 def RunSteps(api: recipe_api.RecipeScriptApi, props: InputProperties) -> None:
-    checkout: api.checkout.CheckoutContext = api.checkout(
-        props.checkout_options
-    )
+    checkout = api.checkout(props.checkout_options)
 
     if res := api.limited_cq.exit_early_if_not_approved(checkout.changes):
         return res  # pragma: no cover
 
-    env: api.environment.Environment = api.environment.init(
-        checkout, props.environment_options
-    )
+    env = api.environment.init(checkout, props.environment_options)
 
     cmd: list[str | config_types.Path] = [checkout.root / props.script]
 
@@ -72,11 +69,14 @@
 
         props_out = api.path.mkdtemp() / 'output_properties.json'
         api.path.mock_add_file(props_out)
-        env = {'PROPERTIES_OUT': props_out}
+        additional_env = {'PROPERTIES_OUT': props_out}
         if props.cas_digest_in:
-            env['CAS_DIGEST_IN'] = props.cas_digest_in
+            additional_env['CAS_DIGEST_IN'] = props.cas_digest_in
 
-        with api.context(cwd=checkout.root, env=env):
+        if 'pigweed.disable_rbe' in api.buildbucket.build.input.experiments:
+            additional_env['USE_RBE'] = 'false'
+
+        with api.context(cwd=checkout.root, env=additional_env):
             api.step(f'run {props.script}', cmd)
 
         if api.path.isfile(props_out):
@@ -94,14 +94,22 @@
 def GenTests(
     api: recipe_test_api.RecipeTestApi,
 ) -> Iterator[recipe_test_api.TestData]:
-    def properties(**kwargs: Any) -> recipe_test_api.TestData:
+    def properties(
+        *,
+        checkout_options: Mapping[str, Any] | None = None,
+        **kwargs: Any,
+    ) -> recipe_test_api.TestData:
         props = InputProperties(**kwargs)
-        props.checkout_options.CopyFrom(api.checkout.git_options())
+        props.checkout_options.CopyFrom(
+            api.checkout.git_options(**(checkout_options or {})),
+        )
         return api.properties(props)
 
     yield api.test(
         'run_script',
+        api.buildbucket.ci_build(experiments=['pigweed.disable_rbe']),
         properties(
+            checkout_options={'use_trigger': False},
             script='foo/bar/run-tests.sh',
             arguments='foo bar'.split(),
             cas_digest_in='hashy-hashy-hashy',
