diff --git a/cabal-install/src/Distribution/Client/ProjectOrchestration.hs b/cabal-install/src/Distribution/Client/ProjectOrchestration.hs
index ccbd84d43c31c71aecc1e5166606350d51d960e9..0060894b94beb35908745d956bee5e497161f275 100644
--- a/cabal-install/src/Distribution/Client/ProjectOrchestration.hs
+++ b/cabal-install/src/Distribution/Client/ProjectOrchestration.hs
@@ -859,8 +859,10 @@ printPlan verbosity
           ProjectBaseContext {
             buildSettings = BuildTimeSettings{buildSettingDryRun},
             projectConfig = ProjectConfig {
+              projectConfigAllPackages =
+                  PackageConfig {packageConfigOptimization = globalOptimization},
               projectConfigLocalPackages =
-                  PackageConfig {packageConfigOptimization}
+                  PackageConfig {packageConfigOptimization = localOptimization}
             }
           }
           ProjectBuildContext {
@@ -994,7 +996,7 @@ printPlan verbosity
     showBuildProfile :: String
     showBuildProfile = "Build profile: " ++ unwords [
       "-w " ++ (showCompilerId . pkgConfigCompiler) elaboratedShared,
-      "-O" ++  (case packageConfigOptimization of
+      "-O" ++  (case globalOptimization <> localOptimization of -- if local is not set, read global
                 Setup.Flag NoOptimisation      -> "0"
                 Setup.Flag NormalOptimisation  -> "1"
                 Setup.Flag MaximumOptimisation -> "2"
diff --git a/cabal-testsuite/PackageTests/ConfigFile/T8487/cabal.out b/cabal-testsuite/PackageTests/ConfigFile/T8487/cabal.out
new file mode 100644
index 0000000000000000000000000000000000000000..bbedd1662c888792db25b4ba773566c0bb36e9e9
--- /dev/null
+++ b/cabal-testsuite/PackageTests/ConfigFile/T8487/cabal.out
@@ -0,0 +1,8 @@
+# cabal build
+Resolving dependencies...
+Build profile: -w ghc-<GHCVER> -O2
+In order, the following will be built:
+ - test-0.1.0.0 (lib) (first run)
+Configuring library for test-0.1.0.0..
+Preprocessing library for test-0.1.0.0..
+Building library for test-0.1.0.0..
diff --git a/cabal-testsuite/PackageTests/ConfigFile/T8487/cabal.project b/cabal-testsuite/PackageTests/ConfigFile/T8487/cabal.project
new file mode 100644
index 0000000000000000000000000000000000000000..e6fdbadb4398bc0e333947b5fb8021778310d943
--- /dev/null
+++ b/cabal-testsuite/PackageTests/ConfigFile/T8487/cabal.project
@@ -0,0 +1 @@
+packages: .
diff --git a/cabal-testsuite/PackageTests/ConfigFile/T8487/cabal.test.hs b/cabal-testsuite/PackageTests/ConfigFile/T8487/cabal.test.hs
new file mode 100644
index 0000000000000000000000000000000000000000..010c47ea4b4734b7c9d0e2632ec0261f9b78bec2
--- /dev/null
+++ b/cabal-testsuite/PackageTests/ConfigFile/T8487/cabal.test.hs
@@ -0,0 +1,7 @@
+-- 2022-09-20, issue #8487
+--
+
+import Test.Cabal.Prelude
+
+main = cabalTest $ do
+  cabalG [ "--config-file", "config.file" ] "build" [ "test" ]
diff --git a/cabal-testsuite/PackageTests/ConfigFile/T8487/config.file b/cabal-testsuite/PackageTests/ConfigFile/T8487/config.file
new file mode 100644
index 0000000000000000000000000000000000000000..9f3421cdcb2d94ad33db5d9222918f1faace3ee0
--- /dev/null
+++ b/cabal-testsuite/PackageTests/ConfigFile/T8487/config.file
@@ -0,0 +1 @@
+optimization: 2
diff --git a/cabal-testsuite/PackageTests/ConfigFile/T8487/src/MyLib.hs b/cabal-testsuite/PackageTests/ConfigFile/T8487/src/MyLib.hs
new file mode 100644
index 0000000000000000000000000000000000000000..e657c4403f66f966da13d2027bf595d9673387f6
--- /dev/null
+++ b/cabal-testsuite/PackageTests/ConfigFile/T8487/src/MyLib.hs
@@ -0,0 +1,4 @@
+module MyLib (someFunc) where
+
+someFunc :: IO ()
+someFunc = putStrLn "someFunc"
diff --git a/cabal-testsuite/PackageTests/ConfigFile/T8487/test.cabal b/cabal-testsuite/PackageTests/ConfigFile/T8487/test.cabal
new file mode 100644
index 0000000000000000000000000000000000000000..f48ee85d0084f95759d9742f3ff91622831ce968
--- /dev/null
+++ b/cabal-testsuite/PackageTests/ConfigFile/T8487/test.cabal
@@ -0,0 +1,13 @@
+cabal-version:   3.0
+name:            test
+version:         0.1.0.0
+license:         NONE
+author:          a.pelenitsyn@gmail.com
+maintainer:      Artem Pelenitsyn
+build-type:      Simple
+
+library
+    exposed-modules:  MyLib
+    build-depends:    base
+    hs-source-dirs:   src
+    default-language: Haskell2010
diff --git a/changelog.d/issue-8487 b/changelog.d/issue-8487
new file mode 100644
index 0000000000000000000000000000000000000000..432c74d81d6df74b283fcf174cc9d9134f4c66a2
--- /dev/null
+++ b/changelog.d/issue-8487
@@ -0,0 +1,12 @@
+synopsis: "Build profile" message now reflects optimization level set in global config
+packages: cabal-install
+prs: #8488
+issues: #8487
+
+description: {
+
+Imagine you have `optimization: 2` in your `~/.cabal/config`, and you call `cabal build`
+in a project that doesn't have optimization level explicitly set in its project file.
+You will still see 'Build profile: -w ghc-<VER> -O1'. This is incorrect and was fixed
+in this patch: now you'll see '-O2'.
+}