diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,13 @@
 
 The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
 
+## 0.4.3.0 - 2022-03-18
+
+### Added
+
+ - `isFlake` and `isFlakeJob` fields for to support an optimized checkout flow
+   supporting access of flake metadata fields like `sourceInfo`.
+
 ## 0.4.2.0 - 2022-03-15
 
 ### Added
diff --git a/hercules-ci-api-agent.cabal b/hercules-ci-api-agent.cabal
--- a/hercules-ci-api-agent.cabal
+++ b/hercules-ci-api-agent.cabal
@@ -1,7 +1,7 @@
 cabal-version: 1.12
 
 name:           hercules-ci-api-agent
-version:        0.4.2.0
+version:        0.4.3.0
 synopsis:       API definition for Hercules CI Agent to talk to hercules-ci.com or Hercules CI Enterprise
 category:       API, CI, Testing, DevOps, Nix
 homepage:       https://github.com/hercules-ci/hercules-ci-agent#readme
@@ -40,6 +40,7 @@
       Hercules.API.Agent.Evaluate.EvaluateEvent.OnPushHandlerEvent
       Hercules.API.Agent.Evaluate.EvaluateEvent.PushedAll
       Hercules.API.Agent.Evaluate.EvaluateTask
+      Hercules.API.Agent.Evaluate.EvaluateTask.OnPush
       Hercules.API.Agent.Evaluate.ImmutableInput
       Hercules.API.Agent.Evaluate.ImmutableGitInput
       Hercules.API.Agent.LifeCycle
diff --git a/src/Hercules/API/Agent/Evaluate/EvaluateEvent/OnPushHandlerEvent.hs b/src/Hercules/API/Agent/Evaluate/EvaluateEvent/OnPushHandlerEvent.hs
--- a/src/Hercules/API/Agent/Evaluate/EvaluateEvent/OnPushHandlerEvent.hs
+++ b/src/Hercules/API/Agent/Evaluate/EvaluateEvent/OnPushHandlerEvent.hs
@@ -3,11 +3,22 @@
 
 module Hercules.API.Agent.Evaluate.EvaluateEvent.OnPushHandlerEvent where
 
+import Control.Applicative ((<|>))
+import Control.Lens (at, (%~))
+import qualified Data.Aeson as A
+import Data.Aeson.Lens (_Object)
 import Hercules.API.Agent.Evaluate.EvaluateEvent.InputDeclaration (InputDeclaration)
 import Hercules.API.Prelude
 
 data OnPushHandlerEvent = OnPushHandlerEvent
   { handlerName :: Text,
-    handlerExtraInputs :: Map Text InputDeclaration
+    handlerExtraInputs :: Map Text InputDeclaration,
+    isFlake :: Bool
   }
-  deriving (Generic, Show, Eq, NFData, FromJSON, ToJSON)
+  deriving (Generic, Show, Eq, NFData, ToJSON)
+
+instance FromJSON OnPushHandlerEvent where
+  parseJSON = A.genericParseJSON A.defaultOptions . fixup
+    where
+      fixup :: A.Value -> A.Value
+      fixup = _Object . at "isFlake" %~ (<|> Just (A.Bool False))
diff --git a/src/Hercules/API/Agent/Evaluate/EvaluateTask.hs b/src/Hercules/API/Agent/Evaluate/EvaluateTask.hs
--- a/src/Hercules/API/Agent/Evaluate/EvaluateTask.hs
+++ b/src/Hercules/API/Agent/Evaluate/EvaluateTask.hs
@@ -1,8 +1,10 @@
 {-# LANGUAGE DeriveAnyClass #-}
+{-# LANGUAGE DuplicateRecordFields #-}
 
 module Hercules.API.Agent.Evaluate.EvaluateTask where
 
 import Data.Aeson (Value)
+import Hercules.API.Agent.Evaluate.EvaluateTask.OnPush (OnPush)
 import Hercules.API.Agent.Evaluate.ImmutableInput (ImmutableInput)
 import Hercules.API.Prelude
 import Hercules.API.Task (Task)
@@ -12,12 +14,18 @@
     primaryInput :: Text, -- Obsolete since >= 0.8
     otherInputs :: Map Identifier Text, -- identifier -> HTTP URL
     inputMetadata :: Map Identifier (Map Text Value),
+    inputs :: Map Identifier ImmutableInput,
     autoArguments :: Map Text (SubPathOf Identifier), -- argument name -> identifier
     nixPath :: [NixPathElement (SubPathOf Identifier)], -- NIX_PATH element -> identifier
     logToken :: Text,
     selector :: Selector,
     ciSystems :: Maybe (Map Text ()),
-    extraGitCredentials :: Maybe [Credential]
+    extraGitCredentials :: Maybe [Credential],
+    -- | Whether to use Nix's fetching mechanism for everything.
+    --
+    -- Putting checkouts in the store isn't always desirable, so we keep the
+    -- non-flake behavior of custom checkouts for non-flake use cases.
+    isFlakeJob :: Bool
   }
   deriving (Generic, Show, Eq, NFData, ToJSON, FromJSON)
 
@@ -31,12 +39,6 @@
 data Selector
   = ConfigOrLegacy
   | OnPush OnPush
-  deriving (Generic, Show, Eq, NFData, ToJSON, FromJSON)
-
-data OnPush = MkOnPush
-  { name :: Text,
-    inputs :: Map Text ImmutableInput
-  }
   deriving (Generic, Show, Eq, NFData, ToJSON, FromJSON)
 
 type Identifier = Text
diff --git a/src/Hercules/API/Agent/Evaluate/EvaluateTask/OnPush.hs b/src/Hercules/API/Agent/Evaluate/EvaluateTask/OnPush.hs
new file mode 100644
--- /dev/null
+++ b/src/Hercules/API/Agent/Evaluate/EvaluateTask/OnPush.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE DeriveAnyClass #-}
+
+module Hercules.API.Agent.Evaluate.EvaluateTask.OnPush where
+
+import Hercules.API.Agent.Evaluate.ImmutableInput (ImmutableInput)
+import Hercules.API.Prelude
+
+data OnPush = MkOnPush
+  { name :: Text,
+    -- | extraInputs
+    inputs :: Map Text ImmutableInput
+  }
+  deriving (Generic, Show, Eq, NFData, ToJSON, FromJSON)
