diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Changelog for shake-plus
 
+## v0.1.2.0
+
+* Add `copyFileWithin'` and `copyFileChangedWithin`.
+
 ## v0.1.1.0
 
 * Make `Within` style functions more consistent in that they actually take `Within` values
diff --git a/shake-plus.cabal b/shake-plus.cabal
--- a/shake-plus.cabal
+++ b/shake-plus.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: f808d169ff8bcc1ebeb21d2907855a6fb0f592026d7a94b1e42630ac6199a522
+-- hash: 22c352c73131bbd83a4d870d78b7037dea00056e69b13a477b50bce1c85f774d
 
 name:           shake-plus
-version:        0.1.1.0
+version:        0.1.2.0
 synopsis:       Re-export of Shake using well-typed paths and ReaderT.
 description:    Re-export of Shake using well-typed paths and ReaderT. You can thread logging through your Shake Actions, and better keep track of source and output folders using the Within type.
 category:       development, shake
diff --git a/src/Development/Shake/Plus/File.hs b/src/Development/Shake/Plus/File.hs
--- a/src/Development/Shake/Plus/File.hs
+++ b/src/Development/Shake/Plus/File.hs
@@ -1,6 +1,8 @@
 module Development.Shake.Plus.File (
   copyFile'
 , copyFileChanged
+, copyFileWithin'
+, copyFileChangedWithin
 , readFile'
 , readFileLines
 , readFileIn'
@@ -32,6 +34,14 @@
 -- | Lifted version of `Development.Shake.copyFileChanged'` with well-typed `Path`s.
 copyFileChanged :: (MonadAction m, Partial) => Path Rel File -> Path Rel File -> m ()
 copyFileChanged x y = liftAction $ Development.Shake.copyFileChanged (toFilePath x) (toFilePath y)
+
+-- | Like copyFile', but accepts `Within` values.
+copyFileWithin' :: (MonadAction m, Partial) => Within Rel (Path Rel File) -> Within Rel (Path Rel File) -> m ()
+copyFileWithin' x y = copyFile' (fromWithin x) (fromWithin y)
+
+-- | Like copyFileChanged, but accepts `Within` values.
+copyFileChangedWithin :: (MonadAction m, Partial) => Within Rel (Path Rel File) -> Within Rel (Path Rel File) -> m ()
+copyFileChangedWithin x y = copyFileChanged (fromWithin x) (fromWithin y)
 
 -- | Lifted version of `Development.Shake.readFile'` with well-typed `Path`.
 readFile' :: (MonadAction m, Partial) => Path Rel File -> m Text
