diff --git a/bin/media/media_service/BUILD.gn b/bin/media/media_service/BUILD.gn
index 636ce72..ebd6ef8 100644
--- a/bin/media/media_service/BUILD.gn
+++ b/bin/media/media_service/BUILD.gn
@@ -10,11 +10,6 @@
   ]
 
   binary = "media_service"
-
-  meta = [ {
-        path = rebase_path("meta/sandbox")
-        dest = "sandbox"
-      } ]
 }
 
 executable("media_service_bin") {
diff --git a/bin/media/media_service/file_reader_impl.cc b/bin/media/media_service/file_reader_impl.cc
index ac2c772..d41ae97 100644
--- a/bin/media/media_service/file_reader_impl.cc
+++ b/bin/media/media_service/file_reader_impl.cc
@@ -17,17 +17,6 @@
 
 // static
 std::shared_ptr<FileReaderImpl> FileReaderImpl::Create(
-    const fidl::String& path,
-    fidl::InterfaceRequest<SeekingReader> request,
-    MediaServiceImpl* owner) {
-  // TODO(dalesat): This version requires filesystem access. Remove it.
-  return std::shared_ptr<FileReaderImpl>(
-      new FileReaderImpl(fxl::UniqueFD(open(path.get().c_str(), O_RDONLY)),
-                         std::move(request), owner));
-}
-
-// static
-std::shared_ptr<FileReaderImpl> FileReaderImpl::Create(
     zx::channel file_channel,
     fidl::InterfaceRequest<SeekingReader> request,
     MediaServiceImpl* owner) {
diff --git a/bin/media/media_service/file_reader_impl.h b/bin/media/media_service/file_reader_impl.h
index 9907ada..74bbd21 100644
--- a/bin/media/media_service/file_reader_impl.h
+++ b/bin/media/media_service/file_reader_impl.h
@@ -21,11 +21,6 @@
                        public SeekingReader {
  public:
   static std::shared_ptr<FileReaderImpl> Create(
-      const fidl::String& path,
-      fidl::InterfaceRequest<SeekingReader> request,
-      MediaServiceImpl* owner);
-
-  static std::shared_ptr<FileReaderImpl> Create(
       zx::channel file_channel,
       fidl::InterfaceRequest<SeekingReader> request,
       MediaServiceImpl* owner);
diff --git a/bin/media/media_service/media_service_impl.cc b/bin/media/media_service/media_service_impl.cc
index 0f91fba..c42d1be 100644
--- a/bin/media/media_service/media_service_impl.cc
+++ b/bin/media/media_service/media_service_impl.cc
@@ -109,15 +109,6 @@
       }));
 }
 
-void MediaServiceImpl::CreateFileReader(
-    const fidl::String& path,
-    fidl::InterfaceRequest<SeekingReader> request) {
-  CreateProductOnNewThread<FileReaderImpl>(fxl::MakeCopyable(
-      [ this, path = path, request = std::move(request) ]() mutable {
-        return FileReaderImpl::Create(path, std::move(request), this);
-      }));
-}
-
 void MediaServiceImpl::CreateAudioRenderer(
     fidl::InterfaceRequest<AudioRenderer> audio_renderer_request,
     fidl::InterfaceRequest<MediaRenderer> media_renderer_request) {
@@ -170,11 +161,10 @@
     zx::channel file_channel,
     fidl::InterfaceRequest<SeekingReader> request) {
   CreateProductOnNewThread<FileReaderImpl>(fxl::MakeCopyable([
-    this, file_channel = std::move(file_channel),
-    request = std::move(request)
+    this, file_channel = std::move(file_channel), request = std::move(request)
   ]() mutable {
-    return FileReaderImpl::Create(std::move(file_channel),
-                                  std::move(request), this);
+    return FileReaderImpl::Create(std::move(file_channel), std::move(request),
+                                  this);
   }));
 }
 
diff --git a/bin/media/media_service/media_service_impl.h b/bin/media/media_service/media_service_impl.h
index ba77a65..bbb8699 100644
--- a/bin/media/media_service/media_service_impl.h
+++ b/bin/media/media_service/media_service_impl.h
@@ -74,9 +74,6 @@
       const fidl::String& url,
       fidl::InterfaceRequest<SeekingReader> reader) override;
 
-  void CreateFileReader(const fidl::String& path,
-                        fidl::InterfaceRequest<SeekingReader> reader) override;
-
   void CreateAudioRenderer(
       fidl::InterfaceRequest<AudioRenderer> audio_renderer,
       fidl::InterfaceRequest<MediaRenderer> media_renderer) override;
diff --git a/bin/media/media_service/meta/sandbox b/bin/media/media_service/meta/sandbox
deleted file mode 100644
index 625c8cc..0000000
--- a/bin/media/media_service/meta/sandbox
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "system": [ "data" ],
-    "features": [ "persistent-storage", "system-temp" ]
-}
diff --git a/public/lib/media/fidl/media_service.fidl b/public/lib/media/fidl/media_service.fidl
index 17f1dd7..95c340d 100644
--- a/public/lib/media/fidl/media_service.fidl
+++ b/public/lib/media/fidl/media_service.fidl
@@ -51,22 +51,19 @@
   // Creates a network reader.
   CreateNetworkReader@6(string url, SeekingReader& reader);
 
-  // Creates a file reader.
-  CreateFileReader@7(string path, SeekingReader& reader);
-
   // Creates an audio renderer.
-  CreateAudioRenderer@8(AudioRenderer& audio_renderer,
+  CreateAudioRenderer@7(AudioRenderer& audio_renderer,
                         MediaRenderer& media_renderer);
 
   // Creates a video renderer.
-  CreateVideoRenderer@9(VideoRenderer& video_renderer,
+  CreateVideoRenderer@8(VideoRenderer& video_renderer,
                         MediaRenderer& media_renderer);
 
   // Creates a timeline controller reader.
-  CreateTimelineController@10(MediaTimelineController& timeline_controller);
+  CreateTimelineController@9(MediaTimelineController& timeline_controller);
 
   // Creates a reformatter for LPCM audio.
-  CreateLpcmReformatter@11(MediaType input_media_type,
+  CreateLpcmReformatter@10(MediaType input_media_type,
                           AudioSampleFormat output_sample_format,
                           MediaTypeConverter& lpcm_reformatter);
 };
