diff --git a/.changes/unreleased/Improvements-1957.yaml b/.changes/unreleased/Improvements-1957.yaml
new file mode 100644
index 00000000000..3862435451c
--- /dev/null
+++ b/.changes/unreleased/Improvements-1957.yaml
@@ -0,0 +1,6 @@
+component: sdk
+kind: Improvements
+body: Add support for the builtin Stash resource
+time: 2025-12-12T13:24:29.609174Z
+custom:
+ PR: "1957"
diff --git a/pkg/cmd/pulumi-language-java/language_test.go b/pkg/cmd/pulumi-language-java/language_test.go
index 27c8f2fb9ab..ff2bfc28433 100644
--- a/pkg/cmd/pulumi-language-java/language_test.go
+++ b/pkg/cmd/pulumi-language-java/language_test.go
@@ -186,7 +186,6 @@ var expectedFailures = map[string]string{
"l2-invoke-scalar": "exception at runtime",
"l3-component-simple": "compilation error",
"l1-builtin-cwd": "test failing",
- "l1-builtin-stash": "test failing",
"l1-stack-reference": "test failing",
"l2-invoke-options": "test failing",
"l1-output-map": "test failing",
diff --git a/pkg/cmd/pulumi-language-java/testdata/projects/l1-builtin-stash/0/Pulumi.yaml b/pkg/cmd/pulumi-language-java/testdata/projects/l1-builtin-stash/0/Pulumi.yaml
new file mode 100644
index 00000000000..f7540a66b96
--- /dev/null
+++ b/pkg/cmd/pulumi-language-java/testdata/projects/l1-builtin-stash/0/Pulumi.yaml
@@ -0,0 +1,2 @@
+name: l1-builtin-stash
+runtime: java
diff --git a/pkg/cmd/pulumi-language-java/testdata/projects/l1-builtin-stash/0/pom.xml b/pkg/cmd/pulumi-language-java/testdata/projects/l1-builtin-stash/0/pom.xml
new file mode 100644
index 00000000000..005b4f0124b
--- /dev/null
+++ b/pkg/cmd/pulumi-language-java/testdata/projects/l1-builtin-stash/0/pom.xml
@@ -0,0 +1,95 @@
+
+
+ 4.0.0
+
+ com.pulumi
+ l1-builtin-stash
+ 1.0-SNAPSHOT
+
+
+ UTF-8
+ 11
+ 11
+ 11
+ generated_program.App
+
+
+
+
+
+ repository-0
+ REPOSITORY
+
+
+
+
+
+ com.pulumi
+ pulumi
+ CORE.VERSION
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+ 3.2.2
+
+
+
+ true
+ ${mainClass}
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-assembly-plugin
+ 3.4.2
+
+
+
+ true
+ ${mainClass}
+
+
+
+ jar-with-dependencies
+
+
+
+
+ make-my-jar-with-dependencies
+ package
+
+ single
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 3.1.0
+
+ ${mainClass}
+ ${mainArgs}
+
+
+
+ org.apache.maven.plugins
+ maven-wrapper-plugin
+ 3.1.1
+
+ 3.8.5
+
+
+
+
+
\ No newline at end of file
diff --git a/pkg/cmd/pulumi-language-java/testdata/projects/l1-builtin-stash/0/src/main/java/generated_program/App.java b/pkg/cmd/pulumi-language-java/testdata/projects/l1-builtin-stash/0/src/main/java/generated_program/App.java
new file mode 100644
index 00000000000..6e8f542035a
--- /dev/null
+++ b/pkg/cmd/pulumi-language-java/testdata/projects/l1-builtin-stash/0/src/main/java/generated_program/App.java
@@ -0,0 +1,33 @@
+package generated_program;
+
+import com.pulumi.Context;
+import com.pulumi.Pulumi;
+import com.pulumi.core.Output;
+import com.pulumi.pulumi.Stash;
+import com.pulumi.pulumi.StashArgs;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+
+public class App {
+ public static void main(String[] args) {
+ Pulumi.run(App::stack);
+ }
+
+ public static void stack(Context ctx) {
+ var myStash = new Stash("myStash", StashArgs.builder()
+ .input(Map.ofEntries(
+ Map.entry("key",
+ "value",
+ "s"),
+ Map.entry("", false)
+ ))
+ .build());
+
+ ctx.export("stashInput", myStash.input());
+ ctx.export("stashOutput", myStash.output());
+ }
+}
diff --git a/sdk/java/pulumi/src/main/java/com/pulumi/resources/Stash.java b/sdk/java/pulumi/src/main/java/com/pulumi/resources/Stash.java
new file mode 100644
index 00000000000..a612c632a79
--- /dev/null
+++ b/sdk/java/pulumi/src/main/java/com/pulumi/resources/Stash.java
@@ -0,0 +1,75 @@
+package com.pulumi.resources;
+
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import com.pulumi.core.Output;
+import com.pulumi.core.annotations.Export;
+import com.pulumi.core.internal.Internal;
+import com.pulumi.core.internal.Maps;
+import com.pulumi.core.internal.OutputData;
+import com.pulumi.core.internal.annotations.InternalUse;
+import com.pulumi.exceptions.RunException;
+
+import javax.annotation.Nullable;
+import javax.annotation.ParametersAreNonnullByDefault;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+
+/**
+ * Stash stores an arbitrary value in the state.
+ */
+public class Stash extends CustomResource {
+
+ @Export(name = "output", refs = {Object.class})
+ private Output