diff --git a/contractcourt/briefcase.go b/contractcourt/briefcase.go
index 2132da6de..11ab83390 100644
--- a/contractcourt/briefcase.go
+++ b/contractcourt/briefcase.go
@@ -10,9 +10,11 @@ import (
 	"github.com/btcsuite/btcd/txscript"
 	"github.com/btcsuite/btcd/wire"
 	"github.com/lightningnetwork/lnd/channeldb"
+	"github.com/lightningnetwork/lnd/fn"
 	"github.com/lightningnetwork/lnd/input"
 	"github.com/lightningnetwork/lnd/kvdb"
 	"github.com/lightningnetwork/lnd/lnwallet"
+	"github.com/lightningnetwork/lnd/tlv"
 )
 
 // ContractResolutions is a wrapper struct around the two forms of resolutions
@@ -1554,6 +1556,12 @@ func encodeTaprootAuxData(w io.Writer, c *ContractResolutions) error {
 		commitSignDesc := commitResolution.SelfOutputSignDesc
 		//nolint:lll
 		tapCase.CtrlBlocks.Val.CommitSweepCtrlBlock = commitSignDesc.ControlBlock
+
+		c.CommitResolution.ResolutionBlob.WhenSome(func(b []byte) {
+			tapCase.CommitBlob = tlv.SomeRecordT(
+				tlv.NewPrimitiveRecord[tlv.TlvType2](b),
+			)
+		})
 	}
 
 	for _, htlc := range c.HtlcResolutions.IncomingHTLCs {
@@ -1640,6 +1648,10 @@ func decodeTapRootAuxData(r io.Reader, c *ContractResolutions) error {
 	if c.CommitResolution != nil {
 		c.CommitResolution.SelfOutputSignDesc.ControlBlock =
 			tapCase.CtrlBlocks.Val.CommitSweepCtrlBlock
+
+		tapCase.CommitBlob.WhenSomeV(func(b []byte) {
+			c.CommitResolution.ResolutionBlob = fn.Some(b)
+		})
 	}
 
 	for i := range c.HtlcResolutions.IncomingHTLCs {
diff --git a/contractcourt/taproot_briefcase.go b/contractcourt/taproot_briefcase.go
index 2057c0b01..016dee5e0 100644
--- a/contractcourt/taproot_briefcase.go
+++ b/contractcourt/taproot_briefcase.go
@@ -29,6 +29,11 @@ type taprootBriefcase struct {
 	// are to be spent via a keyspend path. This includes anchors, and any
 	// revocation paths.
 	TapTweaks tlv.RecordT[tlv.TlvType1, tapTweaks]
+
+	// CommitBlob is an optional record that contains an opaque blob that
+	// may be used to properly sweep commitment outputs on a force close
+	// transaction.
+	CommitBlob tlv.OptionalRecordT[tlv.TlvType2, tlv.Blob]
 }
 
 // TODO(roasbeef): morph into new tlv record
@@ -47,6 +52,11 @@ func (t *taprootBriefcase) EncodeRecords() []tlv.Record {
 	records := []tlv.Record{
 		t.CtrlBlocks.Record(), t.TapTweaks.Record(),
 	}
+
+	t.CommitBlob.WhenSome(func(r tlv.RecordT[tlv.TlvType2, tlv.Blob]) {
+		records = append(records, r.Record())
+	})
+
 	return records
 }
 
@@ -69,16 +79,22 @@ func (t *taprootBriefcase) Encode(w io.Writer) error {
 
 // Decode decodes the given reader into the target struct.
 func (t *taprootBriefcase) Decode(r io.Reader) error {
-	stream, err := tlv.NewStream(t.DecodeRecords()...)
+	commitBlob := t.CommitBlob.Zero()
+	records := append(t.DecodeRecords(), commitBlob.Record())
+	stream, err := tlv.NewStream(records...)
 	if err != nil {
 		return err
 	}
 
-	_, err = stream.DecodeWithParsedTypes(r)
+	typeMap, err := stream.DecodeWithParsedTypes(r)
 	if err != nil {
 		return err
 	}
 
+	if val, ok := typeMap[t.CommitBlob.TlvType()]; ok && val == nil {
+		t.CommitBlob = tlv.SomeRecordT(commitBlob)
+	}
+
 	return nil
 }
 
diff --git a/contractcourt/taproot_briefcase_test.go b/contractcourt/taproot_briefcase_test.go
index 1b0d0b399..66adc3c07 100644
--- a/contractcourt/taproot_briefcase_test.go
+++ b/contractcourt/taproot_briefcase_test.go
@@ -70,6 +70,10 @@ func TestTaprootBriefcase(t *testing.T) {
 	_, err = rand.Read(anchorTweak[:])
 	require.NoError(t, err)
 
+	var commitBlob [100]byte
+	_, err = rand.Read(commitBlob[:])
+	require.NoError(t, err)
+
 	testCase := &taprootBriefcase{
 		CtrlBlocks: tlv.NewRecordT[tlv.TlvType0](ctrlBlocks{
 			CommitSweepCtrlBlock:   sweepCtrlBlock[:],
@@ -83,6 +87,9 @@ func TestTaprootBriefcase(t *testing.T) {
 			BreachedHtlcTweaks:            randHtlcTweaks(t),
 			BreachedSecondLevelHltcTweaks: randHtlcTweaks(t),
 		}),
+		CommitBlob: tlv.SomeRecordT(
+			tlv.NewPrimitiveRecord[tlv.TlvType2](commitBlob[:]),
+		),
 	}
 
 	var b bytes.Buffer