diff --git a/doc/source/using_config.rst b/doc/source/using_config.rst
index acfff95..6e9fe24 100644
--- a/doc/source/using_config.rst
+++ b/doc/source/using_config.rst
@@ -900,7 +900,6 @@
 .. code:: yaml
 
    remote-execution:
-     pull-artifact-files: True
      execution-service:
        url: http://execution.fallback.example.com:50051
        instance-name: main
@@ -918,16 +917,6 @@
 Attributes
 ''''''''''
 
-* ``pull-artifact-files``
-
-  This determines whether you want the artifacts which were built remotely
-  to be downloaded into the local CAS, so that it is ready for checkout
-  directly after a built completes.
-
-  If this is set to ``false``, then you will need to download the artifacts
-  you intend to use with :ref:`bst artifact checkout <invoking_artifact_checkout>`
-  after your build completes.
-
 * ``execution-service``
 
   A :ref:`service configuration <user_config_remote_execution_service>` specifying
@@ -1095,7 +1084,6 @@
        # remote execution configuration.
        #
        remote-execution:
-         pull-artifact-files: True
          execution-service:
            url: http://execution.example.com:50051
            instance-name: main
diff --git a/src/buildstream/_context.py b/src/buildstream/_context.py
index 7a46caa..2c1f25a 100644
--- a/src/buildstream/_context.py
+++ b/src/buildstream/_context.py
@@ -175,9 +175,6 @@
         # User specified cache quota, used for display messages
         self.config_cache_quota_string: Optional[str] = None
 
-        # Whether to pull the files of an artifact when doing remote execution
-        self.pull_artifact_files: bool = True
-
         # Whether or not to attempt to pull build trees globally
         self.pull_buildtrees: Optional[bool] = None
 
@@ -376,10 +373,10 @@
         cache_config = defaults.get_mapping("source-caches", default={})
         self._global_source_cache_config = _CacheConfig.new_from_node(cache_config)
 
-        # Load the global remote execution config including pull-artifact-files setting
+        # Load the global remote execution config
         remote_execution = defaults.get_mapping("remote-execution", default=None)
         if remote_execution:
-            self.pull_artifact_files, self.remote_execution_specs = self._load_remote_execution(remote_execution)
+            self.remote_execution_specs = self._load_remote_execution(remote_execution)
 
         # Load pull build trees configuration
         self.pull_buildtrees = cache.get_bool("pull-buildtrees")
@@ -549,7 +546,7 @@
             override_node = self.get_overrides(project.name)
             remote_execution = override_node.get_mapping("remote-execution", default=None)
             if remote_execution:
-                self.pull_artifact_files, self.remote_execution_specs = self._load_remote_execution(remote_execution)
+                self.remote_execution_specs = self._load_remote_execution(remote_execution)
 
         #
         # Maintain our list of remote specs for artifact and source caches
@@ -758,18 +755,5 @@
         if not os.environ.get("XDG_DATA_HOME"):
             os.environ["XDG_DATA_HOME"] = os.path.expanduser("~/.local/share")
 
-    def _load_remote_execution(self, node: MappingNode) -> Tuple[bool, Optional[RemoteExecutionSpec]]:
-        # The pull_artifact_files attribute is special, it is allowed to
-        # be set to False even if there is no remote execution service configured.
-        #
-        pull_artifact_files: bool = node.get_bool("pull-artifact-files", default=True)
-        node.safe_del("pull-artifact-files")
-
-        # Don't pass the remote execution settings if that was the only option
-        remote_execution_specs: Optional[RemoteExecutionSpec]
-        if node.keys():
-            remote_execution_specs = RemoteExecutionSpec.new_from_node(node)
-        else:
-            remote_execution_specs = None
-
-        return pull_artifact_files, remote_execution_specs
+    def _load_remote_execution(self, node: MappingNode) -> Optional[RemoteExecutionSpec]:
+        return RemoteExecutionSpec.new_from_node(node)
diff --git a/src/buildstream/_frontend/widget.py b/src/buildstream/_frontend/widget.py
index 589e548..9994818 100644
--- a/src/buildstream/_frontend/widget.py
+++ b/src/buildstream/_frontend/widget.py
@@ -500,7 +500,6 @@
             values["Storage Service"] = format_spec(specs.storage_spec)
             if specs.action_spec:
                 values["Action Cache Service"] = format_spec(specs.action_spec)
-            values["Pull artifact files"] = context.pull_artifact_files
             text += self._format_values(values)
 
         # Print information about each loaded project
diff --git a/src/buildstream/_stream.py b/src/buildstream/_stream.py
index 520483b..0559d8d 100644
--- a/src/buildstream/_stream.py
+++ b/src/buildstream/_stream.py
@@ -383,11 +383,9 @@
             # Require artifact files only for target elements and their runtime dependencies.
             self._context.set_artifact_files_optional()
 
-            # fetch blobs of targets if options set
-            if self._context.pull_artifact_files:
-                scope = _Scope.ALL if selection == _PipelineSelection.ALL else _Scope.RUN
-                for element in self.targets:
-                    element._set_artifact_files_required(scope=scope)
+            scope = _Scope.ALL if selection == _PipelineSelection.ALL else _Scope.RUN
+            for element in self.targets:
+                element._set_artifact_files_required(scope=scope)
 
         source_push_enabled = self._sourcecache.has_push_remotes()
 
diff --git a/tests/remoteexecution/partial.py b/tests/remoteexecution/partial.py
index a47abee..cd87293 100644
--- a/tests/remoteexecution/partial.py
+++ b/tests/remoteexecution/partial.py
@@ -20,9 +20,8 @@
 # Test that `bst build` does not download file blobs of a build-only dependency
 # to the local cache.
 @pytest.mark.datafiles(DATA_DIR)
-@pytest.mark.parametrize("pull_artifact_files", [True, False])
 @pytest.mark.parametrize("build_all", [True, False])
-def test_build_dependency_partial_local_cas(cli, datafiles, pull_artifact_files, build_all):
+def test_build_dependency_partial_local_cas(cli, datafiles, build_all):
     project = str(datafiles)
     element_name = "no-runtime-deps.bst"
     builddep_element_name = "autotools/amhello.bst"
@@ -35,24 +34,20 @@
     # configure pull blobs
     if build_all:
         cli.configure({"build": {"dependencies": "all"}})
-    cli.config["remote-execution"]["pull-artifact-files"] = pull_artifact_files
 
     result = cli.run(project=project, args=["build", element_name])
     result.assert_success()
 
     # Verify artifact is pulled bar files when ensure artifact files is set
     result = cli.run(project=project, args=["artifact", "checkout", element_name, "--directory", checkout])
-    if pull_artifact_files:
-        result.assert_success()
-        assert_contains(checkout, ["/test"])
-    else:
-        result.assert_main_error(ErrorDomain.STREAM, "uncached-checkout-attempt")
+    result.assert_success()
+    assert_contains(checkout, ["/test"])
 
     # Verify build dependencies is pulled for ALL and BUILD
     result = cli.run(
         project=project, args=["artifact", "checkout", builddep_element_name, "--directory", builddep_checkout]
     )
-    if build_all and pull_artifact_files:
+    if build_all:
         result.assert_success()
     else:
         result.assert_main_error(ErrorDomain.STREAM, "uncached-checkout-attempt")
