diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
index a73edf0..fd9ac8e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
@@ -195,7 +195,7 @@
    * @param actionName a string giving the name of this action for the purpose of toolchain
    *     evaluation
    * @param cppSemantics C++ compilation semantics
-   * @param cppProvider - CcToolchainProvider with configuration-dependent information.
+   * @param builtInIncludeDirectories - list of toolchain-defined builtin include directories.
    */
   CppCompileAction(
       ActionOwner owner,
@@ -225,7 +225,7 @@
       ImmutableMap<String, String> executionInfo,
       String actionName,
       CppSemantics cppSemantics,
-      CcToolchainProvider cppProvider,
+      ImmutableList<PathFragment> builtInIncludeDirectories,
       @Nullable Artifact grepIncludes) {
     super(
         owner,
@@ -270,8 +270,7 @@
     this.needsIncludeValidation = cppSemantics.needsIncludeValidation();
     this.includeProcessing = cppSemantics.getIncludeProcessing();
     this.actionClassId = actionClassId;
-    this.builtInIncludeDirectories =
-        ImmutableList.copyOf(cppProvider.getBuiltInIncludeDirectories());
+    this.builtInIncludeDirectories = builtInIncludeDirectories;
     this.additionalInputs = null;
     this.usedModules = null;
     this.topLevelModules = null;
@@ -984,6 +983,7 @@
      * warning have changed, otherwise we might miss some errors.
      */
     fp.addPaths(ccCompilationContext.getDeclaredIncludeDirs());
+    fp.addPaths(builtInIncludeDirectories);
   }
 
   @Override
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java
index f5d4c27..6c07974 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java
@@ -80,6 +80,7 @@
   private ImmutableList<Artifact> builtinIncludeFiles;
   private Iterable<Artifact> inputsForInvalidation = ImmutableList.of();
   private Iterable<Artifact> additionalPrunableHeaders = ImmutableList.of();
+  private ImmutableList<PathFragment> builtinIncludeDirectories;
   // New fields need to be added to the copy constructor.
 
   /**
@@ -118,6 +119,7 @@
     this.env = configuration.getActionEnvironment();
     this.codeCoverageEnabled = configuration.isCodeCoverageEnabled();
     this.ccToolchain = ccToolchain;
+    this.builtinIncludeDirectories = ccToolchain.getBuiltInIncludeDirectories();
     this.grepIncludes = grepIncludes;
   }
 
@@ -155,6 +157,7 @@
     this.ccToolchain = other.ccToolchain;
     this.actionName = other.actionName;
     this.grepIncludes = other.grepIncludes;
+    this.builtinIncludeDirectories = other.builtinIncludeDirectories;
   }
 
   public PathFragment getTempOutputFile() {
@@ -313,7 +316,7 @@
               ccCompilationContext,
               coptsFilter,
               cppSemantics,
-              ccToolchain,
+              builtinIncludeDirectories,
               ImmutableMap.copyOf(executionInfo),
               grepIncludes);
     } else {
@@ -346,7 +349,7 @@
               ImmutableMap.copyOf(executionInfo),
               getActionName(),
               cppSemantics,
-              ccToolchain,
+              builtinIncludeDirectories,
               grepIncludes);
     }
 
@@ -644,6 +647,13 @@
     return this;
   }
 
+  @VisibleForTesting
+  public CppCompileActionBuilder setBuiltinIncludeDirectories(
+      ImmutableList<PathFragment> builtinIncludeDirectories) {
+    this.builtinIncludeDirectories = builtinIncludeDirectories;
+    return this;
+  }
+
   public boolean shouldCompileHeaders() {
     Preconditions.checkNotNull(featureConfiguration);
     return ccToolchain.shouldProcessHeaders(featureConfiguration);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java
index 161083a..f281e1b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java
@@ -78,7 +78,7 @@
       CcCompilationContext ccCompilationContext,
       CoptsFilter nocopts,
       CppSemantics cppSemantics,
-      CcToolchainProvider cppProvider,
+      ImmutableList<PathFragment> builtInIncludeDirectories,
       ImmutableMap<String, String> executionInfo,
       Artifact grepIncludes) {
     super(
@@ -116,7 +116,7 @@
         executionInfo,
         CppActionNames.CPP_COMPILE,
         cppSemantics,
-        cppProvider,
+        builtInIncludeDirectories,
         grepIncludes);
     this.tempOutputFile = Preconditions.checkNotNull(tempOutputFile);
   }
