diff --git a/peridot/bin/sessionmgr/sessionmgr.cc b/peridot/bin/sessionmgr/sessionmgr.cc
index 384a212..9d9cf85 100644
--- a/peridot/bin/sessionmgr/sessionmgr.cc
+++ b/peridot/bin/sessionmgr/sessionmgr.cc
@@ -34,6 +34,8 @@
   opts.use_memfs_for_ledger = command_line.HasOption("use_memfs_for_ledger");
   opts.no_cloud_provider_for_ledger =
       command_line.HasOption("no_cloud_provider_for_ledger");
+  opts.use_cloud_provider_from_environment =
+      command_line.HasOption("use_cloud_provider_from_environment");
 
   async::Loop loop(&kAsyncLoopConfigAttachToThread);
   trace::TraceProvider trace_provider(loop.dispatcher());
diff --git a/peridot/bin/sessionmgr/sessionmgr_impl.cc b/peridot/bin/sessionmgr/sessionmgr_impl.cc
index a21c6aa..931fe11 100644
--- a/peridot/bin/sessionmgr/sessionmgr_impl.cc
+++ b/peridot/bin/sessionmgr/sessionmgr_impl.cc
@@ -290,20 +290,17 @@
   fuchsia::ledger::cloud::CloudProviderPtr cloud_provider;
   std::string ledger_user_id;
   if (account_ && !options_.no_cloud_provider_for_ledger) {
-    // If not running in Guest mode, spin up a cloud provider for Ledger to use
-    // for syncing.
-    fuchsia::modular::AppConfig cloud_provider_config;
-    cloud_provider_config.url = kCloudProviderFirestoreAppUrl;
-    cloud_provider_app_ =
-        std::make_unique<AppClient<fuchsia::modular::Lifecycle>>(
-            user_environment_->GetLauncher(), std::move(cloud_provider_config));
-    cloud_provider_app_->services().ConnectToService(
-        cloud_provider_factory_.NewRequest());
+    // If not running in Guest mode, configure the cloud provider for Ledger to
+    // use for syncing.
 
-    cloud_provider = GetCloudProvider(std::move(ledger_token_manager));
+    if (options_.use_cloud_provider_from_environment) {
+      startup_context_->ConnectToEnvironmentService(
+          cloud_provider.NewRequest());
+    } else {
+      cloud_provider = LaunchCloudProvider(std::move(ledger_token_manager));
+    }
+
     ledger_user_id = account_->profile_id;
-
-    // TODO(mesch): Teardown cloud_provider_app_ ?
   }
 
   ledger_repository_factory_.set_error_handler([this](zx_status_t status) {
@@ -878,10 +875,20 @@
       story_id, std::move(entity_provider_request));
 }
 
-fuchsia::ledger::cloud::CloudProviderPtr SessionmgrImpl::GetCloudProvider(
+fuchsia::ledger::cloud::CloudProviderPtr SessionmgrImpl::LaunchCloudProvider(
     fidl::InterfaceHandle<fuchsia::auth::TokenManager> ledger_token_manager) {
   FXL_CHECK(ledger_token_manager);
 
+  fuchsia::modular::AppConfig cloud_provider_app_config;
+  cloud_provider_app_config.url = kCloudProviderFirestoreAppUrl;
+  cloud_provider_app_ =
+      std::make_unique<AppClient<fuchsia::modular::Lifecycle>>(
+          user_environment_->GetLauncher(),
+          std::move(cloud_provider_app_config));
+  cloud_provider_app_->services().ConnectToService(
+      cloud_provider_factory_.NewRequest());
+  // TODO(mesch): Teardown cloud_provider_app_ ?
+
   fuchsia::ledger::cloud::CloudProviderPtr cloud_provider;
   auto cloud_provider_config = GetLedgerFirestoreConfig();
 
diff --git a/peridot/bin/sessionmgr/sessionmgr_impl.h b/peridot/bin/sessionmgr/sessionmgr_impl.h
index 19cc922..2946be1 100644
--- a/peridot/bin/sessionmgr/sessionmgr_impl.h
+++ b/peridot/bin/sessionmgr/sessionmgr_impl.h
@@ -68,8 +68,13 @@
     // /data/LEDGER.
     bool use_memfs_for_ledger;
 
-    // If set, DO NOT pass a cloud provider to the ledger.
+    // If set, no cloud provider is configured for Ledger. This overrides any
+    // value of |use_cloud_provider_from_environment|.
     bool no_cloud_provider_for_ledger;
+    // If set, use the cloud provider available in the incoming namespace,
+    // rather than initializing an instance within sessionmgr. This can be used
+    // by Voila to inject a custom cloud provider.
+    bool use_cloud_provider_from_environment;
 
     // Sessionmgr passes args startup agents and session agent to maxwell.
     std::vector<std::string> startup_agents;
@@ -173,7 +178,7 @@
       fuchsia::modular::AppConfig config);
   fuchsia::sys::ServiceProviderPtr GetServiceProvider(const std::string& url);
 
-  fuchsia::ledger::cloud::CloudProviderPtr GetCloudProvider(
+  fuchsia::ledger::cloud::CloudProviderPtr LaunchCloudProvider(
       fidl::InterfaceHandle<fuchsia::auth::TokenManager> ledger_token_manager);
 
   // Called during initialization. Schedules the given action to be executed
@@ -308,7 +313,7 @@
   // Part of Initialize() that is deferred until the first environment service
   // request is received from the session shell, in order to accelerate the
   // startup of session shell.
-  fit::function<void()> finish_initialization_{[]{}};
+  fit::function<void()> finish_initialization_{[] {}};
 
   // Set to |true| when sessionmgr starts its terminating sequence;  this flag
   // can be used to determine whether to reject vending FIDL services.
