diff --git a/main/actor.hs b/main/actor.hs
--- a/main/actor.hs
+++ b/main/actor.hs
@@ -30,6 +30,8 @@
     -- ^ Copy working directory.
   , local   :: Bool
     -- ^ Run locally, not in a temp directory.
+  , include :: [FilePath]
+    -- ^ Optional artifacts to filter.
   , command :: String
     -- ^ Command to run.
   } deriving (Show, Generic)
@@ -51,4 +53,5 @@
     (fromMaybe 1 $ num args)
     (nocopy args)
     (local args)
+    (include args)
     (command args)
diff --git a/src/Network/AWS/Wolf/Act.hs b/src/Network/AWS/Wolf/Act.hs
--- a/src/Network/AWS/Wolf/Act.hs
+++ b/src/Network/AWS/Wolf/Act.hs
@@ -22,8 +22,8 @@
 
 -- | S3 copy call.
 --
-cp :: MonadIO m => FilePath -> FilePath -> m ()
-cp f t = liftIO $ callProcess "aws" [ "s3", "cp", "--quiet", "--recursive", f, t ]
+cp :: MonadIO m => [FilePath] -> m ()
+cp = liftIO . callProcess "aws" . (["s3", "cp", "--quiet", "--recursive"] <>)
 
 -- | Key to download and upload objects from.
 --
@@ -35,17 +35,20 @@
 
 -- | Download artifacts to the store input directory.
 --
-download :: MonadAmazonStore c m => FilePath -> m ()
-download dir = do
-  traceInfo "download" [ "dir" .= dir ]
-  flip cp dir =<< key
+download :: MonadAmazonStore c m => FilePath -> [FilePath] -> m ()
+download dir includes = do
+  traceInfo "download" [ "dir" .= dir, "includes" .= includes ]
+  let includes' = bool ([ "--exclude", "*" ] <> interleave (repeat "--include") includes) mempty $ null includes
+  k <- key
+  cp $ includes' <> [ k, dir ]
 
 -- | Upload artifacts from the store output directory.
 --
 upload :: MonadAmazonStore c m => FilePath -> m ()
 upload dir = do
   traceInfo "upload" [ "dir" .= dir ]
-  cp dir =<< key
+  k <- key
+  cp [ dir, k ]
 
 -- | callCommand wrapper that maybe returns an exception.
 --
@@ -72,8 +75,8 @@
 
 -- | Actor logic - poll for work, download artifacts, run command, upload artifacts.
 --
-act :: MonadConf c m => Text -> Bool -> Bool -> String -> m ()
-act queue nocopy local command =
+act :: MonadConf c m => Text -> Bool -> Bool -> [FilePath] -> String -> m ()
+act queue nocopy local includes command =
   preConfCtx [ "label" .= LabelAct ] $
     runAmazonWorkCtx queue $ do
       traceInfo "poll" mempty
@@ -94,7 +97,7 @@
               osd <- outputDirectory sd
               writeJson (dd </> "control.json") (Control uid')
               writeText (dd </> "input.json") input
-              download isd
+              download isd includes
               e <- run command
               upload osd
               output <- readText (dd </> "output.json")
@@ -107,8 +110,8 @@
 
 -- | Run actor from main with config file.
 --
-actMain :: MonadControl m => FilePath -> Maybe FilePath -> Maybe Text -> Maybe Text -> Maybe Text -> Text -> Int -> Bool -> Bool -> String -> m ()
-actMain cf quiesce domain bucket prefix queue num nocopy local command =
+actMain :: MonadControl m => FilePath -> Maybe FilePath -> Maybe Text -> Maybe Text -> Maybe Text -> Text -> Int -> Bool -> Bool -> [FilePath] -> String -> m ()
+actMain cf quiesce domain bucket prefix queue num nocopy local includes command =
   runCtx $ runTop $ do
     conf <- readYaml cf
     let conf' = override cPrefix prefix $ override cBucket bucket $ override cDomain domain conf
@@ -117,4 +120,4 @@
         ok <- check quiesce
         when ok $
           liftIO exitSuccess
-        act queue nocopy local command
+        act queue nocopy local includes command
diff --git a/src/Network/AWS/Wolf/Prelude.hs b/src/Network/AWS/Wolf/Prelude.hs
--- a/src/Network/AWS/Wolf/Prelude.hs
+++ b/src/Network/AWS/Wolf/Prelude.hs
@@ -8,6 +8,7 @@
   ( module Exports
   , runConcurrent
   , override
+  , interleave
   ) where
 
 import Control.Concurrent.Async.Lifted
@@ -22,3 +23,8 @@
 --
 override :: ASetter s s a b -> Maybe b -> s -> s
 override k v c = maybe c (flip (set k) c) v
+
+-- | Interleave arrays.
+--
+interleave :: [a] -> [a] -> [a]
+interleave xs ys = concat $ zipWith (\x y -> [x, y]) xs ys
diff --git a/wolf.cabal b/wolf.cabal
--- a/wolf.cabal
+++ b/wolf.cabal
@@ -1,5 +1,5 @@
 name:                  wolf
-version:               0.3.39
+version:               0.3.40
 synopsis:              Amazon Simple Workflow Service Wrapper.
 description:           Wolf is a wrapper around Amazon Simple Workflow Service.
 homepage:              https://github.com/swift-nav/wolf
