{"id":769,"date":"2026-01-21T20:00:04","date_gmt":"2026-01-21T19:00:04","guid":{"rendered":"https:\/\/secure-pipelines.com\/ci-cd-security\/securing-github-actions-runners-2\/"},"modified":"2026-03-28T11:59:26","modified_gmt":"2026-03-28T10:59:26","slug":"securing-github-actions-runners","status":"publish","type":"post","link":"https:\/\/secure-pipelines.com\/ar\/github-actions\/securing-github-actions-runners\/","title":{"rendered":"\u062a\u0623\u0645\u064a\u0646 GitHub Actions Runners: \u0627\u0644\u0647\u0646\u062f\u0633\u0629 \u0627\u0644\u0645\u0639\u0645\u0627\u0631\u064a\u0629 \u0648\u0627\u0644\u0645\u062e\u0627\u0637\u0631 \u0648\u0623\u0641\u0636\u0644 \u0627\u0644\u0645\u0645\u0627\u0631\u0633\u0627\u062a"},"content":{"rendered":"\n<p>GitHub Actions has become one of the most widely adopted CI\/CD platforms. Its flexibility, tight integration with GitHub repositories, and rich ecosystem make it attractive for teams of all sizes.<\/p>\n\n<p>At the same time, GitHub Actions runners have emerged as a critical attack surface in modern software supply chain attacks.<\/p>\n\n<p>Runners execute untrusted code, handle sensitive secrets, and often operate with broad permissions across repositories, artifact registries, and cloud environments.<\/p>\n\n<p>This article explains how GitHub Actions runners work, why they are frequently targeted by attackers, and how to design runner architectures that significantly reduce risk without breaking developer workflows.<\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h2 class=\"wp-block-heading\">What is a GitHub Actions runner?<\/h2>\n\n<p>A runner is the execution environment where GitHub Actions workflows actually run. Every job in a workflow is executed on a runner.<\/p>\n\n<p>From a security perspective, runners are the most sensitive component of the GitHub Actions architecture because they:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>Execute arbitrary code from workflows<\/li>\n\n\n\n<li>Process repository content and dependencies<\/li>\n\n\n\n<li>Access secrets and tokens<\/li>\n\n\n\n<li>Produce build artifacts<\/li>\n<\/ul>\n\n<p>If a runner is compromised, the attacker may be able to:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>Exfiltrate secrets<\/li>\n\n\n\n<li>Modify build outputs<\/li>\n\n\n\n<li>Persist across jobs or workflows<\/li>\n\n\n\n<li>Move laterally to other systems<\/li>\n<\/ul>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h2 class=\"wp-block-heading\">Types of GitHub Actions runners<\/h2>\n\n<p>Understanding runner security starts with understanding runner types. GitHub Actions supports multiple runner models, each with different trust and risk characteristics.<\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h3 class=\"wp-block-heading\">GitHub-hosted runners<\/h3>\n\n<p>GitHub-hosted runners are managed by GitHub and provided as ephemeral virtual machines. Each job typically runs on a fresh VM that is destroyed after execution.<\/p>\n\n<p>Security characteristics:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>Ephemeral by default<\/li>\n\n\n\n<li>Strong isolation between jobs<\/li>\n\n\n\n<li>No long-lived state between runs<\/li>\n\n\n\n<li>Limited customization<\/li>\n<\/ul>\n\n<p>From a security standpoint, GitHub-hosted runners provide a strong baseline for untrusted workloads such as pull requests.<\/p>\n\n<p>However, they are not risk-free. Secrets exposure, permission misuse, and malicious workflow logic can still lead to compromise.<\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h3 class=\"wp-block-heading\">Self-hosted runners<\/h3>\n\n<p>Self-hosted runners run on infrastructure managed by the organization: VMs, bare metal hosts, or containers.<\/p>\n\n<p>They are often used to:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>Access internal resources<\/li>\n\n\n\n<li>Use custom tooling or environments<\/li>\n\n\n\n<li>Optimize performance or cost<\/li>\n<\/ul>\n\n<p>From a security perspective, self-hosted runners introduce significant risks:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>Persistence across jobs<\/li>\n\n\n\n<li>Shared state between workflows<\/li>\n\n\n\n<li>Network access to internal systems<\/li>\n\n\n\n<li>Higher blast radius if compromised<\/li>\n<\/ul>\n\n<p>Without strong isolation, a single compromised job can affect future builds or other repositories.<\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h3 class=\"wp-block-heading\">Ephemeral self-hosted runners<\/h3>\n\n<p>Ephemeral self-hosted runners combine the flexibility of self-hosted runners with the security benefits of ephemerality.<\/p>\n\n<p>Each job runs on a freshly provisioned runner that is destroyed after completion.<\/p>\n\n<p>This model significantly reduces:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>Persistence risk<\/li>\n\n\n\n<li>Cross-job contamination<\/li>\n\n\n\n<li>Long-lived compromise<\/li>\n<\/ul>\n\n<p>From a security standpoint, ephemeral self-hosted runners are strongly preferred over persistent runners.<\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h2 class=\"wp-block-heading\">Why runners are a prime attack target<\/h2>\n\n<p>Runners sit at the intersection of untrusted inputs and privileged operations. This makes them attractive targets for attackers.<\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h3 class=\"wp-block-heading\">Runners execute untrusted code<\/h3>\n\n<p>Workflows may execute code from:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>Pull requests<\/li>\n\n\n\n<li>Feature branches<\/li>\n\n\n\n<li>Dependencies<\/li>\n\n\n\n<li>Third-party actions<\/li>\n<\/ul>\n\n<p>Any of these can be influenced by an attacker. If untrusted code executes on a runner with secrets or elevated permissions, the compromise is immediate.<\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h3 class=\"wp-block-heading\">Runners often have access to secrets<\/h3>\n\n<p>Secrets are commonly exposed to runners via environment variables.<\/p>\n\n<p>If workflow conditions are misconfigured, secrets may be accessible to:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>Forked pull requests<\/li>\n\n\n\n<li>Untrusted contributors<\/li>\n\n\n\n<li>Malicious third-party actions<\/li>\n<\/ul>\n\n<p>Once a secret is exposed, it is often difficult to detect or contain.<\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h3 class=\"wp-block-heading\">Runners can influence artifacts and releases<\/h3>\n\n<p>Runners build and package software artifacts.<\/p>\n\n<p>If an attacker modifies the build output, the resulting artifact may be distributed with full trust downstream.<\/p>\n\n<p>Without artifact integrity checks, there may be no way to detect the compromise.<\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h2 class=\"wp-block-heading\">Common runner-related attack scenarios<\/h2>\n\n<p>Threat modeling runners reveals recurring attack patterns.<\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h3 class=\"wp-block-heading\">Scenario 1: Pull request abuse<\/h3>\n\n<p>An attacker submits a pull request that modifies workflow logic or introduces malicious build steps.<\/p>\n\n<p>If the workflow exposes secrets or privileged tokens to PR builds, the attacker can exfiltrate credentials.<\/p>\n\n<p>This attack requires no vulnerability\u2014only a trust misconfiguration.<\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h3 class=\"wp-block-heading\">Scenario 2: Third-party action compromise<\/h3>\n\n<p>Workflows frequently use third-party actions.<\/p>\n\n<p>If an action is compromised upstream or referenced without pinning to a specific commit, the attacker can inject malicious behavior into workflows.<\/p>\n\n<p>The runner executes the action with the same permissions as first-party workflow code.<\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h3 class=\"wp-block-heading\">Scenario 3: Persistent self-hosted runner compromise<\/h3>\n\n<p>On persistent self-hosted runners, an attacker can:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>Install backdoors<\/li>\n\n\n\n<li>Modify local tools<\/li>\n\n\n\n<li>Poison caches<\/li>\n\n\n\n<li>Persist across jobs<\/li>\n<\/ul>\n\n<p>Future workflows may unknowingly execute attacker-controlled code.<\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h3 class=\"wp-block-heading\">Scenario 4: Lateral movement via runner infrastructure<\/h3>\n\n<p>Self-hosted runners often have network access to internal systems or cloud environments.<\/p>\n\n<p>A compromised runner can be used as a pivot to attack other internal services.<\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h2 class=\"wp-block-heading\">Runner security architecture principles<\/h2>\n\n<p>Securing GitHub Actions runners is an architectural problem, not a checklist problem.<\/p>\n\n<p>Effective runner security is built on a few core principles.<\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h3 class=\"wp-block-heading\">1. Treat runners as untrusted execution environments<\/h3>\n\n<p>Runners execute untrusted inputs by design.<\/p>\n\n<p>They should never be implicitly trusted, even if they run inside internal infrastructure.<\/p>\n\n<p>Secrets, network access, and privileges must be scoped accordingly.<\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h3 class=\"wp-block-heading\">2. Prefer ephemerality over cleanup<\/h3>\n\n<p>Trying to \u201cclean\u201d a compromised runner is unreliable.<\/p>\n\n<p>Destroying and recreating runners after each job provides a much stronger security guarantee.<\/p>\n\n<p>Ephemeral runners eliminate persistence and significantly reduce attack dwell time.<\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h3 class=\"wp-block-heading\">3. Enforce least privilege at the job level<\/h3>\n\n<p>Each job should receive only the permissions it needs.<\/p>\n\n<p>This includes:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>Repository permissions<\/li>\n\n\n\n<li>Token scopes<\/li>\n\n\n\n<li>Cloud identities<\/li>\n<\/ul>\n\n<p>Avoid granting global or default write permissions.<\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h3 class=\"wp-block-heading\">4. Separate trusted and untrusted workloads<\/h3>\n\n<p>Pull request builds, external contributions, and untrusted code should run in separate environments from trusted release or deployment jobs.<\/p>\n\n<p>This separation can be enforced through:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>Different runner pools<\/li>\n\n\n\n<li>Different workflows<\/li>\n\n\n\n<li>Different permission sets<\/li>\n<\/ul>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h3 class=\"wp-block-heading\">5. Reduce runner attack surface<\/h3>\n\n<p>Minimize what is available on runners:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>Disable unnecessary tools<\/li>\n\n\n\n<li>Restrict outbound network access<\/li>\n\n\n\n<li>Limit filesystem write access<\/li>\n\n\n\n<li>Avoid long-lived caches<\/li>\n<\/ul>\n\n<p>A smaller attack surface limits attacker options.<\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h2 class=\"wp-block-heading\">Best practices for securing GitHub Actions runners<\/h2>\n\n<p>The following practices address the most common runner risks without fundamentally changing developer workflows.<\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h3 class=\"wp-block-heading\">Use GitHub-hosted runners for untrusted code<\/h3>\n\n<p>For pull requests and external contributions, GitHub-hosted runners provide strong isolation and automatic ephemerality.<\/p>\n\n<p>Avoid exposing secrets to these jobs unless strictly required.<\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h3 class=\"wp-block-heading\">Adopt ephemeral self-hosted runners for sensitive workloads<\/h3>\n\n<p>If self-hosted runners are required, make them ephemeral.<\/p>\n\n<p>Each job should:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>Provision a fresh runner<\/li>\n\n\n\n<li>Execute a single job<\/li>\n\n\n\n<li>Be destroyed immediately afterward<\/li>\n<\/ul>\n\n<p>This model dramatically reduces persistence risk.<\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h3 class=\"wp-block-heading\">Lock down permissions explicitly<\/h3>\n\n<p>Use GitHub\u2019s fine-grained permissions model.<\/p>\n\n<p>Define permissions at the workflow or job level instead of relying on defaults.<\/p>\n\n<p>Review permission changes as carefully as code changes.<\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h3 class=\"wp-block-heading\">Pin and review third-party actions<\/h3>\n\n<p>Always pin actions to a specific commit SHA.<\/p>\n\n<p>Avoid using actions that:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>Are unmaintained<\/li>\n\n\n\n<li>Lack transparency<\/li>\n\n\n\n<li>Execute unexpected logic<\/li>\n<\/ul>\n\n<p>Treat actions as part of your supply chain.<\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h3 class=\"wp-block-heading\">Protect secrets aggressively<\/h3>\n\n<p>Avoid exposing secrets to workflows triggered by:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>Forked repositories<\/li>\n\n\n\n<li>Untrusted pull requests<\/li>\n<\/ul>\n\n<p>Prefer short-lived credentials and identity-based access over static secrets.<\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h3 class=\"wp-block-heading\">Validate build outputs<\/h3>\n\n<p>Do not assume that artifacts produced by runners are trustworthy.<\/p>\n\n<p>Use:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>Artifact signing<\/li>\n\n\n\n<li>Provenance attestations<\/li>\n\n\n\n<li>Verification gates before deployment<\/li>\n<\/ul>\n\n<p>This ensures that compromised runners cannot silently poison releases.<\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h2 class=\"wp-block-heading\">Where runner security fits in a broader CI\/CD strategy<\/h2>\n\n<p>Runner security is one part of pipeline security, but it cannot stand alone.<\/p>\n\n<p>It must be combined with:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>CI\/CD threat modeling<\/li>\n\n\n\n<li>Pipeline trust boundaries<\/li>\n\n\n\n<li>Policy enforcement<\/li>\n\n\n\n<li>Artifact integrity verification<\/li>\n<\/ul>\n\n<p>Without these elements, even well-secured runners may still produce untrusted outputs.<\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n<p>GitHub Actions runners are a powerful automation primitive, but they also represent a high-risk execution environment.<\/p>\n\n<p>They execute untrusted code, handle sensitive credentials, and produce artifacts that downstream systems trust.<\/p>\n\n<p>Securing runners requires architectural decisions: ephemerality, isolation, least privilege, and explicit separation of trust levels.<\/p>\n\n<p>Organizations that treat runners as disposable, untrusted execution environments\u2014 rather than trusted infrastructure\u2014 are far better positioned to defend against modern CI\/CD and supply chain attacks.<\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\r\n    <div class=\"secure-pipelines-author-box\" dir=\"rtl\">\r\n        <strong>\u062d\u0648\u0644 \u0627\u0644\u0645\u0624\u0644\u0641<\/strong>\r\n        <p>\u062a\u0645\u062a \u0643\u062a\u0627\u0628\u0629 \u0647\u0630\u0627 \u0627\u0644\u0645\u0642\u0627\u0644 \u0628\u0648\u0627\u0633\u0637\u0629 \u0645\u0647\u0646\u062f\u0633 \u0645\u0639\u0645\u0627\u0631\u064a \u0623\u0648\u0644 \u0641\u064a \u0645\u062c\u0627\u0644 \u0627\u0644\u0623\u0645\u0646 \u0648 DevSecOps\u060c \u064a\u0645\u062a\u0644\u0643 \u0623\u0643\u062b\u0631 \u0645\u0646 15 \u0639\u0627\u0645\u064b\u0627 \u0645\u0646 \u0627\u0644\u062e\u0628\u0631\u0629 \u0641\u064a \u0647\u0646\u062f\u0633\u0629 \u0627\u0644\u0628\u0631\u0645\u062c\u064a\u0627\u062a \u0648\u0623\u0645\u0646 \u0627\u0644\u062a\u0637\u0628\u064a\u0642\u0627\u062a. \u064a\u0639\u0643\u0633 \u0627\u0644\u0645\u062d\u062a\u0648\u0649 \u0646\u0647\u062c\u064b\u0627 \u0639\u0645\u0644\u064a\u064b\u0627 \u0642\u0627\u0626\u0645\u064b\u0627 \u0639\u0644\u0649 \u0642\u064a\u0648\u062f \u0648\u0627\u0642\u0639\u064a\u0629 \u0648\u0645\u0645\u0627\u0631\u0633\u0627\u062a \u0647\u0646\u062f\u0633\u064a\u0629 \u0645\u062b\u0628\u062a\u0629.<\/p>\r\n    <\/div>\r\n\r\n    \n\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"What is a GitHub Actions runner?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"A GitHub Actions runner is the execution environment where workflow jobs run. Runners execute code, handle secrets, and produce build artifacts, making them a critical security component.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Why are GitHub Actions runners a security risk?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Runners execute untrusted code and often have access to secrets and privileged tokens. If compromised, they can be used to exfiltrate credentials or poison build artifacts.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Are self-hosted GitHub Actions runners safe?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Self-hosted runners can be safe if they are ephemeral, isolated, and run with least privilege. Persistent self-hosted runners significantly increase the attack surface.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"What are best practices for securing GitHub Actions runners?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Best practices include using ephemeral runners, enforcing least privilege, isolating untrusted workloads, pinning third-party actions, and protecting secrets from exposure.\"\n      }\n    }\n  ]\n}\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>GitHub Actions has become one of the most widely adopted CI\/CD platforms. Its flexibility, tight integration with GitHub repositories, and rich ecosystem make it attractive for teams of all sizes. At the same time, GitHub Actions runners have emerged as a critical attack surface in modern software supply chain attacks. Runners execute untrusted code, handle &#8230; <a title=\"\u062a\u0623\u0645\u064a\u0646 GitHub Actions Runners: \u0627\u0644\u0647\u0646\u062f\u0633\u0629 \u0627\u0644\u0645\u0639\u0645\u0627\u0631\u064a\u0629 \u0648\u0627\u0644\u0645\u062e\u0627\u0637\u0631 \u0648\u0623\u0641\u0636\u0644 \u0627\u0644\u0645\u0645\u0627\u0631\u0633\u0627\u062a\" class=\"read-more\" href=\"https:\/\/secure-pipelines.com\/ar\/github-actions\/securing-github-actions-runners\/\" aria-label=\"Read more about \u062a\u0623\u0645\u064a\u0646 GitHub Actions Runners: \u0627\u0644\u0647\u0646\u062f\u0633\u0629 \u0627\u0644\u0645\u0639\u0645\u0627\u0631\u064a\u0629 \u0648\u0627\u0644\u0645\u062e\u0627\u0637\u0631 \u0648\u0623\u0641\u0636\u0644 \u0627\u0644\u0645\u0645\u0627\u0631\u0633\u0627\u062a\">\u0627\u0642\u0631\u0623 \u0627\u0644\u0645\u0632\u064a\u062f<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[65,26,66,29],"tags":[],"post_folder":[],"class_list":["post-769","post","type-post","status-publish","format-standard","hentry","category-github-actions","category-ci-cd-security"],"_links":{"self":[{"href":"https:\/\/secure-pipelines.com\/ar\/wp-json\/wp\/v2\/posts\/769","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/secure-pipelines.com\/ar\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/secure-pipelines.com\/ar\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/secure-pipelines.com\/ar\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/secure-pipelines.com\/ar\/wp-json\/wp\/v2\/comments?post=769"}],"version-history":[{"count":2,"href":"https:\/\/secure-pipelines.com\/ar\/wp-json\/wp\/v2\/posts\/769\/revisions"}],"predecessor-version":[{"id":903,"href":"https:\/\/secure-pipelines.com\/ar\/wp-json\/wp\/v2\/posts\/769\/revisions\/903"}],"wp:attachment":[{"href":"https:\/\/secure-pipelines.com\/ar\/wp-json\/wp\/v2\/media?parent=769"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/secure-pipelines.com\/ar\/wp-json\/wp\/v2\/categories?post=769"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/secure-pipelines.com\/ar\/wp-json\/wp\/v2\/tags?post=769"},{"taxonomy":"post_folder","embeddable":true,"href":"https:\/\/secure-pipelines.com\/ar\/wp-json\/wp\/v2\/post_folder?post=769"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}