Abstract
The Durin MCP Security Index compares attributable security evidence for a stated MCP configuration. Version 1 uses a common documented capability baseline, with Stripe as the reference implementation. It reports three distinct outcomes: a baseline score, the coverage and strength of the evidence, and independent advisory or capability findings.
A high score means the applicable baseline is supported by evidence. It is not a probability of safety, a certification, or proof that every deployed operation enforces the documented controls. Assessments are deterministic: collection, matching, scoring and ranking make no language-model calls.
Scope and units of comparison
The unit of assessment is a resolved MCP identity and its observed package release or endpoint scope. Providers are ranked within deployment cohorts because hosted services, installable packages and bridges expose different evidence. Functional categories such as productivity or identity support discovery; they do not change security scores or cohort ranks.
The MCP specification describes tools as model-controlled and recommends a human decision point for tool invocations. CoSAI identifies access control, tool design, human oversight and lifecycle governance as security concerns. The index adapts these themes into its own evidence requirements; the numerical weights are Durin policy. [2] [1]
| Cohort | Assessment unit | Evidence boundary |
|---|---|---|
| Hosted services | A public HTTPS endpoint and its stated configuration | Service documentation, transport and authorization metadata. Deployed server code may be inaccessible. |
| Local packages | An exact registry package release | Registry identity, artifact metadata, published advisories and attributable documentation. Package code is not executed. |
| MCP bridges | A bridge package and its connection model | Package evidence and declared mediation or execution-host controls. A bridge does not establish the safeguards of every upstream service. |
Ranks are comparable within a cohort and assessment policy. A category filter preserves the original cohort ranks.
Evidence, uncertainty and confidence
Evidence is attached to an identity, a stable control ID, a source and an observation time. A criterion's freshness window determines when its evidence expires. Attributed documentation can establish a declared capability, while runtime verification requires evidence appropriate to that control. One does not silently become the other.
SLSA provenance concerns verifiable information about how an artifact was produced. The index distinguishes registry digests and provenance metadata from independent verification of their claims. Metadata inspection does not execute the artifact or establish the security of its behavior. [4]
MCP security guidance addresses authorization context, token handling and scope minimization. In this index, published OAuth and identity metadata establish observable configuration; they do not validate every runtime access decision. [3]
Missing mandatory evidence, an incomplete or expired assessment, active compromise, an unresolved affected release or insufficient assessed weight can prevent ranking. At least 20 category-budget units must have evidence. Confidence and evidence coverage are reported separately from the baseline score; a failed or partial required check cannot establish that there are no known findings.
| State | Meaning | Scoring treatment |
|---|---|---|
| Verified | Evidence satisfies the verification requirement of the control. | Uses the control's verified credit. Timed advisory credit also requires remediation evidence. |
| Documented only | An attributable source describes a capability; deployed enforcement has not been independently established. | Earns the control's documented credit. The baseline can accept full documentation credit; advanced controls can require stronger evidence. |
| Unknown | Evidence is missing, inaccessible, incomplete or expired. | Earns zero. Applicable baseline points remain in the denominator. |
| Failed | Evidence demonstrates that the control is not met. | Earns zero. The finding remains visible. |
| Not applicable | The criterion explicitly permits exclusion for this configuration. | Excluded from applicable points. Unsupported exclusions become unknown. |
The control catalog gives the exact documented and verified credit rules. These states describe evidence, not an overall security verdict.
Scoring model and stability
For each category, earned baseline credit is divided by applicable baseline points, including unknown requirements at zero credit. The effective category weight is the smaller of its fixed budget and its applicable baseline points. The index normalizes the weighted category credits to a score from 0 to 100. Criterion credit is represented in thousandths, and the final score is rounded to the nearest integer.
In notation: effective weight = min(category budget, applicable baseline points); category credit = earned baseline points / applicable baseline points; score = round(100 × sum(effective weight × category credit) / sum(effective weight)). A category with no applicable points contributes no weight.
For a simple illustrative case with all 100 budget units applicable, unknown approval evidence earns zero of the 30 approval units. If every other category earns full credit, the resulting score is 70, assuming all other ranking requirements are met. Real configurations can have a different applicable denominator.
New criteria begin as observations outside the scored roster. Adding them does not change existing scores, scored confidence or ranks, although total catalog coverage changes. Promotion into scoring requires versioned review: existing weights and budgets remain fixed, the 20-unit evidence floor remains, and newly admitted weight must bound movement for already-graded providers to five points. A larger recalibration requires a new baseline edition.
| Category | Maximum budget | Assessment focus |
|---|---|---|
| Human approval | 30 | Independent confirmation for named sensitive actions, plus expiry of pending approval requests. |
| Least privilege | 20 | Scoped capabilities and access, with effective revocation and appropriate separation of authority. |
| Authentication | 15 | Attributable identities, secure authorization and protection of credentials and authorization context. |
| Supply chain | 15 | Exact release identity, artifact integrity and attributable provenance evidence. |
| Audit and recovery | 10 | Traceable activity and documented ways to revoke, recover or investigate. |
| Maintenance | 10 | Current advisory evidence, confirmed remediation and applicable release-maintenance observations. |
Budgets, the evidence floor and promotion limits are Durin policy. They are not weights prescribed by MCP, CoSAI, SLSA or OSV.
Independent human approval
The baseline allocates 24 points to an independent approval flow for named sensitive actions and 6 points to request expiry. Attributable provider or execution-host documentation can meet this capability baseline. An agent-controlled approval flag, an ordinary client tool prompt or initial OAuth consent is not sufficient for this control.
Stripe documents Dashboard review for selected actions, independently of the client's tool-approval setting. Unapproved requests expire after 24 hours. Confirmation depends on the action: a generic write tool can also perform actions outside that approval flow. This is the reference capability, not a claim that every Stripe mutation requires human review. [5]
CoSAI discusses managed host confirmation and server-requested user confirmation as approaches to human oversight. The index recognizes attributable provider and host flows. Exact-action binding, bypass resistance and stronger enforcement assurance remain distinct advanced controls, visible outside the baseline score. [1]
Advisories and remediation timing
Advisories match a resolved package version or endpoint scope. OSV represents affected version ranges with events such as introduction and a fixed release; the presence of a reported fixed version is not evidence that a provider has deployed it. Remediation timing begins at the first attributable public disclosure and ends at a confirmed fixed release publication or reviewed incident end time. [6]
MCP-MNT-002 has four points. A complete, current advisory check with no matching advisory earns full credit. When advisories do match, the worst confirmed remediation latency determines credit. Missing timing evidence stays unknown, while an active affected release earns no credit for this criterion and affects ranking eligibility. Affected providers are checked hourly; this check's evidence expires after two hours without confirmation.
| Observation | Criterion credit | Points out of 4 |
|---|---|---|
| Complete check; no matching advisory | 100% | 4 |
| Confirmed remediation within 24 hours | 100% | 4 |
| More than 24 hours, within 7 days | 75% | 3 |
| More than 7 days, within 30 days | 25% | 1 |
| More than 30 days, or still affected | 0% | 0 |
These timing bands are Durin policy. An import timestamp, healthy endpoint response or reported fixed version alone does not establish remediation.
Catch-all execution as an independent finding
A catch-all red flag identifies an advertised generic execution surface: code, shell commands, unrestricted SQL, dispatch or generic requests. Detection uses inspected tool schemas or configured first-party documentation. Constrained enumerations do not trigger this rule; unavailable or partial inventories remain unknown unless an attributable source independently establishes the capability. Collection never invokes the tools.
CoSAI identifies overly permissive tool capabilities as a security boundary concern. The index treats this as a capability finding, independent of vulnerability advisories and baseline points. A documented approval flow and a catch-all red flag can therefore coexist. Stripe's generic API write tool illustrates why the two observations must remain separate. [1] [5]
Interpretation and limitations
The index describes demonstrated safeguards for a stated configuration at an observation time. First-party claims do not verify all production settings, and unauthenticated metadata does not establish authorization enforcement on every action. Hosted code, authenticated tool inventories and tenant-specific policies can be unavailable. Such gaps remain explicit rather than being filled by inference.
A complete advisory collection with no match is a bounded observation, not proof that no undisclosed vulnerability exists. Package code is not executed, prompt-injection resistance is not inferred from metadata, and functional categories are not risk ratings. Operators should read the control evidence, affected versions and independent findings alongside the score.
Dated editions preserve the methodology text, control definitions, point rules, checks, taxonomy and references used at release. The undated URL points to the current edition. Historical assessments retain their original calculation policy; this publication does not rewrite previous scores or make different baselines directly comparable.
Deterministic checks
Checks describe what collection can establish. Unsupported observations remain explicit. A release waiting period is not a security verdict, and unavailable hosted code is not assumed to be safe.
| Check ID | Applies to | Requirement | Observation |
|---|---|---|---|
| identity_resolved | package, hosted | Required | The MCP resolves to an exact package release or a public HTTPS endpoint scope. |
| artifact_integrity | package | Required | The registry supplies an artifact digest for the exact release. |
| advisory_match | package, hosted | Required | Published Durin advisories are matched against the exact release or endpoint scope. |
| release_age | package | Informational | The release is older than the configured waiting period. Age is a waiting period, not a verdict. |
| install_scripts | package | Informational | Install-time scripts are reported as a review signal. |
| dependency_graph | package | Informational | Resolved transitive dependency assessment (later capability). |
| remote_transport | hosted | Required | The configured endpoint uses HTTPS on a public origin. |
| deployed_code | hosted | Informational | Hosted deployed code is not visible; reported as unsupported rather than assumed. |
Assessment validity: 7 days. Release waiting period: 60 minutes.
| Check ID | Scope | Observation |
|---|---|---|
| public_documentation | Packages and hosted services | Fetches configured first-party pages with bounded requests and matches reviewed phrase rules. Permission, revocation and approval claims receive documented-only credit. Unavailable statements become unknown; documentation does not renew runtime verification. |
| human_approval | Packages and hosted services | Recognizes attributed server confirmation, execution-host permission policies, application review and held human workflows for named sensitive actions. Ordinary client prompts, annotations and OAuth consent do not qualify. Expiry is assessed separately. |
| advisory_remediation_hourly | Known affected releases and hosted incidents | Refreshes known affected releases and checks fixed-version publication or reviewed incident end times every hour. Missing evidence stays unknown. |
| catch_all_execution | Inspectable inventories or configured documentation | Inspects advertised names and unconstrained inputs for generic code, command, SQL, dispatch or request capabilities. Protected or incomplete inventories remain unknown unless first-party documentation independently declares the capability. Tools are not executed. |
Appendix A. Control catalog
Control IDs identify the same safeguard across providers. Baseline controls contribute to the score; advanced assurance remains visible outside it. Each criterion has a fixed weight. Independent subcriteria have distinct evidence requirements and contribute their stated share; atomic criteria retain one evidence check. Historical editions preserve their original allocations.
Hosted services
| Confidence | Minimum evidence coverage | Minimum verified share |
|---|---|---|
| high | 80% | 50% |
| medium | 50% | 20% |
| low | 0% | 0% |
Coverage and verified share use applicable baseline points. Confidence describes evidence, not a probability of safety.
MCP-APR-001Does the provider or trusted execution host offer independent human approval for named sensitive actions?
Baseline: attributed first-party documentation describes an independent human approval flow for named sensitive actions, separate from an agent-controlled flag or ordinary client tool prompt. Stripe documents Dashboard confirmation for selected actions. This does not claim every mutation requires approval or that bypass resistance was tested.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-APR-001.01–MCP-APR-001.24 | 1 point for documented or verified evidence. | 24 × 1 |
MCP-APR-002Is a confirmation bound to the exact action, recipient and amount, so it cannot be changed after approval?
Checks whether approval is bound to the exact action and its resources, recipient and amount. Changing the action after approval must invalidate it. This needs an authorized sandbox or attributed reviewed evidence.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-APR-002.01–MCP-APR-002.02 | 1 point for documented or verified evidence. | 2 × 1 |
| MCP-APR-002.03 | Documentation earns 0.4 point; verified evidence earns 1 point. | 1 × 1 |
| MCP-APR-002.04–MCP-APR-002.08 | 1 point requires verified evidence. Documentation alone earns 0. | 5 × 1 |
MCP-APR-003Can the agent avoid confirmation by self-approving, setting a flag, replaying an approval or using an alternate write path?
Checks whether self-approval, agent-controlled flags, replay and alternate mutation paths can bypass confirmation. A verified control resists those attempts. The index does not infer this from a tool description.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-APR-003.01 | 1 point for documented or verified evidence. | 1 × 1 |
| MCP-APR-003.02 | Documentation earns 0.2 point; verified evidence earns 1 point. | 1 × 1 |
| MCP-APR-003.03–MCP-APR-003.06 | 1 point requires verified evidence. Documentation alone earns 0. | 4 × 1 |
MCP-APR-004Are denied, expired and revoked approvals refused with no effect?
Checks that denied, expired and revoked approvals cause no side effect. Verification needs an authorized sandbox or reviewed evidence of those outcomes.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-APR-004.01 | 1 point for documented or verified evidence. | 1 × 1 |
| MCP-APR-004.02 | Documentation earns 0.2 point; verified evidence earns 1 point. | 1 × 1 |
| MCP-APR-004.03–MCP-APR-004.04 | 1 point requires verified evidence. Documentation alone earns 0. | 2 × 1 |
MCP-APR-005Do unapproved sensitive-action requests expire within 24 hours?
Baseline: the provider or trusted execution host documents that pending sensitive-action approval requests expire within 24 hours without approval, matching Stripe. Documentation establishes the capability; runtime refusal after expiry remains independently testable.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-APR-005.01–MCP-APR-005.06 | 1 point for documented or verified evidence. | 6 × 1 |
MCP-PRV-001Can access be limited to narrow, named permissions?
Collects published OAuth scope metadata where available. Multiple advertised scopes establish documentation, not enforcement. Verifying narrow permissions on actual privileged operations requires an authorized account or reviewed evidence.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-PRV-001.01–MCP-PRV-001.20 | 1 point for documented or verified evidence. | 20 × 1 |
MCP-PRV-002Is a read-only mode or tool subset available and enforced?
Checks for an enforced read-only mode or explicit tool subset. A documented option can earn limited credit; proving writes are refused requires an authorized sandbox or reviewed evidence.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-PRV-002.01–MCP-PRV-002.02 | 1 point for documented or verified evidence. | 2 × 1 |
| MCP-PRV-002.03 | Documentation earns 0.4 point; verified evidence earns 1 point. | 1 × 1 |
| MCP-PRV-002.04–MCP-PRV-002.06 | 1 point requires verified evidence. Documentation alone earns 0. | 3 × 1 |
MCP-PRV-003Are files, processes, network and accounts bounded to the configured resources?
Checks whether file access, process execution, network access and connected accounts stay within configured resources. These boundaries require reviewed configuration and controlled tests; metadata alone does not establish enforcement.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-PRV-003.01–MCP-PRV-003.02 | 1 point for documented or verified evidence. | 2 × 1 |
| MCP-PRV-003.03 | Documentation earns 0.4 point; verified evidence earns 1 point. | 1 × 1 |
| MCP-PRV-003.04–MCP-PRV-003.06 | 1 point requires verified evidence. Documentation alone earns 0. | 3 × 1 |
MCP-AUT-001Is a standard sign-in and authorization flow available and discoverable?
Baseline: public authorization discovery and an unauthenticated refusal identify an offered standard sign-in flow. Metadata verification does not establish enforcement on every operation.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-AUT-001.01–MCP-AUT-001.06 | 1 point for documented or verified evidence. | 6 × 1 |
MCP-AUT-002Is the intended service audience or account and environment scope declared?
Baseline: attributed documentation or protected-resource metadata declares the intended service audience or account and environment boundary. Wrong-audience rejection and authorization on every operation require additional assurance evidence.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-AUT-002.01–MCP-AUT-002.05 | 1 point for documented or verified evidence. | 5 × 1 |
MCP-AUT-003Is delegated agent authentication documented without sharing a personal long-lived key?
Baseline: the provider documents delegated OAuth or an equivalent constrained agent-authentication option. This establishes an offered capability, not that every configuration avoids long-lived credentials or that logs were inspected.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-AUT-003.01–MCP-AUT-003.04 | 1 point for documented or verified evidence. | 4 × 1 |
MCP-SUP-001Is an attributed publisher identity available for the endpoint?
Baseline: a registry-verified namespace or attributed reviewed provider catalog identifies the endpoint publisher. Evidence retains its verified or documented-only label; a familiar name or popularity alone does not establish ownership.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-SUP-001.01–MCP-SUP-001.09 | 1 point for documented or verified evidence. | 9 × 1 |
MCP-SUP-002Is the endpoint served over verified HTTPS on the publisher's domain?
Checks that the endpoint answers over verified TLS. A registry-verified publisher domain can earn full credit; TLS without that attribution earns documented credit. Merely configuring an HTTPS URL does not establish this evidence.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-SUP-002.01–MCP-SUP-002.06 | 1 point for documented or verified evidence. | 6 × 1 |
MCP-SUP-003Can the deployed release be independently identified?
Checks whether the code version deployed behind a hosted endpoint can be independently identified. A service URL, successful handshake or healthy response does not identify the deployed release.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-SUP-003.01 | 1 point for documented or verified evidence. | 1 × 1 |
| MCP-SUP-003.02 | Documentation earns 0.8 point; verified evidence earns 1 point. | 1 × 1 |
| MCP-SUP-003.03–MCP-SUP-003.06 | 1 point requires verified evidence. Documentation alone earns 0. | 4 × 1 |
MCP-AUD-001Are actions attributable and recorded?
Checks whether actions are recorded with an attributable actor and useful audit context. Verification requires reviewed audit records or an authorized sandbox; published claims alone earn limited credit.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-AUD-001.01 | 1 point for documented or verified evidence. | 1 × 1 |
| MCP-AUD-001.02 | Documentation earns 0.6 point; verified evidence earns 1 point. | 1 × 1 |
| MCP-AUD-001.03–MCP-AUD-001.04 | 1 point requires verified evidence. Documentation alone earns 0. | 2 × 1 |
MCP-AUD-002Is an explicit session or credential revocation mechanism documented?
Baseline: the provider documents how a person or administrator can revoke a session or credential and describes its account or environment scope. Runtime enforcement after revocation is a separate assurance question; documented evidence keeps its documented-only label.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-AUD-002.01–MCP-AUD-002.10 | 1 point for documented or verified evidence. | 10 × 1 |
MCP-AUD-003Is practical remediation documented?
Checks for practical, attributed recovery instructions such as fixed versions, removal steps or credential rotation. Published guidance earns documented credit; tested remediation requires additional evidence.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-AUD-003.01 | 1 point for documented or verified evidence. | 1 × 1 |
| MCP-AUD-003.02 | Documentation earns 0.2 point; verified evidence earns 1 point. | 1 × 1 |
MCP-MNT-001Is a security contact published?
Fetches security.txt for the publisher domain, then a repository SECURITY.md when available. A published contact earns documented credit; this does not measure whether the provider responds promptly.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-MNT-001.01–MCP-MNT-001.03 | 1 point for documented or verified evidence. | 3 × 1 |
MCP-MNT-002Are there no matching published advisories, or were known advisories remediated promptly?
A complete, current advisory check with no matching published advisory earns full credit. Known advisories are checked hourly. Confirmed remediation earns 100% within 24 hours, 75% within 7 days, 25% within 30 days and zero afterward. Open or unknown cases earn zero; check evidence expires after two hours.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-MNT-002.01 | 1 point after a complete check with no matching advisory, or confirmed remediation within 30 days. Otherwise 0. | 1 × 1 |
| MCP-MNT-002.02–MCP-MNT-002.03 | 1 point after a complete check with no matching advisory, or confirmed remediation within 7 days. Otherwise 0. | 2 × 1 |
| MCP-MNT-002.04 | 1 point after a complete check with no matching advisory, or confirmed remediation within 24 hours. Otherwise 0. | 1 × 1 |
MCP-MNT-003Has a package release been published within the last 12 months?
Compares the package registry publication timestamp with a 12-month window. This measures release recency, not documentation quality or maintenance. It is not applicable to hosted services with no public package; an unknown timestamp earns no credit.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-MNT-003.01–MCP-MNT-003.03 | 1 point for documented or verified evidence. | 3 × 1 |
Appendix B. Provider classification
One reviewed primary functional category per MCP identity. Classify the exposed service, not its transport, name, security controls or safety score.
| Category | Definition |
|---|---|
| Productivity & Collaboration | Documents, spreadsheets, calendars, forms, project management and shared workspaces. |
| Communication & Messaging | Email, chat, voice, meetings, notifications and message-delivery services. |
| Identity & Access Management | Authentication, authorization, agent identities, credential access and identity trust. |
| Security & Compliance | Vulnerability assessment, threat protection, security policy, privacy and security assurance. |
| Developer Tools | Source control, APIs, software testing, code intelligence and developer documentation. |
| Cloud & Infrastructure | Compute, hosting, storage infrastructure, networks, DNS, containers and deployment operations. |
| Data & Analytics | Databases, data platforms, data engineering, business intelligence and general web/product analytics. |
| Observability & Monitoring | Logs, traces, errors, uptime, reliability monitoring and incident response. |
| Sales & CRM | Customer relationships, prospecting, lead enrichment, sales engagement and deal pipelines. |
| Customer Support | Customer service, help desks, service management and support operations. |
| Marketing & Advertising | Campaigns, advertising, SEO, social publishing, audience growth and marketing-specific analytics. |
| Finance & Payments | Banking, payments, accounting, billing, treasury and financial-market data. |
| Content & Knowledge Management | File repositories, content management systems, knowledge bases and learning-content access. |
| Design & Media | Design tools, visual assets, diagrams, creative production, audio and video. |
| Search & Research | Web search, crawling, research literature and specialized information discovery. |
| Automation & Integration | Workflow automation, API integration, general tool gateways and MCP transport bridges. |
| AI & Machine Learning | Model platforms, inference gateways, agent orchestration and persistent agent memory. |
| Legal & Regulatory | Legal research, regulatory intelligence, contract operations and statutory compliance. |
| Human Resources | Recruiting, hiring, employee management and people operations. |
| Business Operations | Enterprise resource planning and integrated operational business workflows. |
Functional categories are separate from deployment cohorts and security scores.
References
- Model Context Protocol (MCP) Security
CoSAI, Workstream 4. Version 2.0, updated 12 August 2026; control sections 3.2.2, 3.2.8–3.2.11. Accessed 2026-11-11.
- Tools: User Interaction Model
Model Context Protocol. Specification dated 25 November 2025. Accessed 2026-11-11.
- Security Best Practices
Model Context Protocol. Confused deputy, token passthrough, SSRF and scope minimization guidance. Accessed 2026-11-11.
- SLSA: Provenance
OpenSSF / SLSA. SLSA 1.2. Accessed 2026-11-11.
- Model Context Protocol: confirmation and tools
Stripe. Action-specific Dashboard confirmation, expiry and generic API tool documentation. Accessed 2026-11-11.
- Open Source Vulnerability format
OpenSSF / OSV. Schema 1.9.2, 13 October 2026; affected ranges and fixed events. Accessed 2026-11-11.
Edition history
Dated links preserve released methodology content. The undated address opens the current edition.
- Version 2 · 2026-11-11-v2Current edition
- Version 1 · 2026-11-11
Edition fingerprint: sha256:eb7da9d823c624950c51de9660d39ddd64eb8c13d86584ddaeb14ab141e60799