diff --git a/substrate/utils/frame/benchmarking-cli/src/lib.rs b/substrate/utils/frame/benchmarking-cli/src/lib.rs
index 6e4f092084ef55d9cfa6fd660841a40afd3dc1ad..a44a208b16ae9763dcf1532b30185eff4bb41570 100644
--- a/substrate/utils/frame/benchmarking-cli/src/lib.rs
+++ b/substrate/utils/frame/benchmarking-cli/src/lib.rs
@@ -30,6 +30,7 @@ pub use extrinsic::{ExtrinsicBuilder, ExtrinsicCmd, ExtrinsicFactory};
 pub use machine::{MachineCmd, Requirements, SUBSTRATE_REFERENCE_HARDWARE};
 pub use overhead::OverheadCmd;
 pub use pallet::PalletCmd;
+pub use sc_service::BasePath;
 pub use storage::StorageCmd;
 
 use sc_cli::{CliConfiguration, DatabaseParams, ImportParams, PruningParams, Result, SharedParams};
@@ -87,6 +88,19 @@ impl CliConfiguration for BenchmarkCmd {
 		}
 	}
 
+	fn base_path(&self) -> Result<Option<BasePath>> {
+		let inner = unwrap_cmd! {
+			self, cmd, cmd.base_path()
+		};
+
+		// If the base path was not provided, benchmark command shall use temporary path. Otherwise
+		// we may end up using shared path, which may be inappropriate for benchmarking.
+		match inner {
+			Ok(None) => Some(BasePath::new_temp_dir()).transpose().map_err(|e| e.into()),
+			e => e,
+		}
+	}
+
 	fn pruning_params(&self) -> Option<&PruningParams> {
 		unwrap_cmd! {
 			self, cmd, cmd.pruning_params()