diff --git a/pkg/resources/sequence_grant.go b/pkg/resources/sequence_grant.go
index 774572d2c7..e2b2f9dfd0 100644
--- a/pkg/resources/sequence_grant.go
+++ b/pkg/resources/sequence_grant.go
@@ -229,9 +229,14 @@ func UpdateSequenceGrant(d *schema.ResourceData, meta interface{}) error {
 	dbName := grantID.ResourceName
 	schemaName := grantID.SchemaName
 	sequenceName := grantID.ObjectName
+	futureSequences := (sequenceName == "")
 
-	// create the builder
-	builder := snowflake.SequenceGrant(dbName, schemaName, sequenceName)
+	var builder snowflake.GrantBuilder
+	if futureSequences {
+		builder = snowflake.FutureSequenceGrant(dbName, schemaName)
+	} else {
+		builder = snowflake.SequenceGrant(dbName, schemaName, sequenceName)
+	}
 
 	// first revoke
 	err = deleteGenericGrantRolesAndShares(
diff --git a/pkg/resources/stage_grant.go b/pkg/resources/stage_grant.go
index 32376d78ed..c320d38476 100644
--- a/pkg/resources/stage_grant.go
+++ b/pkg/resources/stage_grant.go
@@ -225,9 +225,14 @@ func UpdateStageGrant(d *schema.ResourceData, meta interface{}) error {
 	dbName := grantID.ResourceName
 	schemaName := grantID.SchemaName
 	stageName := grantID.ObjectName
+	futureStages := (stageName == "")
 
-	// create the builder
-	builder := snowflake.StageGrant(dbName, schemaName, stageName)
+	var builder snowflake.GrantBuilder
+	if futureStages {
+		builder = snowflake.FutureStageGrant(dbName, schemaName)
+	} else {
+		builder = snowflake.StageGrant(dbName, schemaName, stageName)
+	}
 
 	// first revoke
 	err = deleteGenericGrantRolesAndShares(
diff --git a/pkg/resources/stream_grant.go b/pkg/resources/stream_grant.go
index 392672d88b..a057dfb8ac 100644
--- a/pkg/resources/stream_grant.go
+++ b/pkg/resources/stream_grant.go
@@ -230,8 +230,14 @@ func UpdateStreamGrant(d *schema.ResourceData, meta interface{}) error {
 	schemaName := grantID.SchemaName
 	streamName := grantID.ObjectName
 
-	// create the builder
-	builder := snowflake.StreamGrant(dbName, schemaName, streamName)
+	futureStreams := (streamName == "")
+
+	var builder snowflake.GrantBuilder
+	if futureStreams {
+		builder = snowflake.FutureStreamGrant(dbName, schemaName)
+	} else {
+		builder = snowflake.StreamGrant(dbName, schemaName, streamName)
+	}
 
 	// first revoke
 	err = deleteGenericGrantRolesAndShares(
diff --git a/pkg/resources/task_grant.go b/pkg/resources/task_grant.go
index 7c73027bf7..444535b860 100644
--- a/pkg/resources/task_grant.go
+++ b/pkg/resources/task_grant.go
@@ -230,9 +230,14 @@ func UpdateTaskGrant(d *schema.ResourceData, meta interface{}) error {
 	dbName := grantID.ResourceName
 	schemaName := grantID.SchemaName
 	taskName := grantID.ObjectName
+	futureTasks := (taskName == "")
 
-	// create the builder
-	builder := snowflake.TaskGrant(dbName, schemaName, taskName)
+	var builder snowflake.GrantBuilder
+	if futureTasks {
+		builder = snowflake.FutureTaskGrant(dbName, schemaName)
+	} else {
+		builder = snowflake.TaskGrant(dbName, schemaName, taskName)
+	}
 
 	// first revoke
 	err = deleteGenericGrantRolesAndShares(